Spurious wakeup

In the multithreaded programming it is very common to create a structure where a thread waits signals from another one. An example can be a program with a graphic interface: the graphic thread, used to manage user inputs, can be blocked while another thread downloads information: what if the graphic thread is waked up without a reason?