2015-03-29 4 views

Antwort

6

Wenn ein Thread warten benachrichtigt wird nicht von notify() oder notifyAll() auf dem Objekt aufgerufen wird der genannte Thread wartet, dann eine beliebige der folgenden kann passieren:

  • die Thread hält in Warte das Objekt Warten Pool
  • die Thread wird Runnable, wenn eine Zeitüberschreitung angegeben wurde ed und die Zeit verstreicht
  • die Thread und wird wieder runnable
  • für kein Grund überhaupt die Thread aufwacht unterbrochen wird, dh es weder noch unterbrochen
mitgeteilt wurde

Der letzte Fall ist bekannt als Spurious Wake-Up und ist einer der Gründe, warum auf Wake-up ein Thread sollte immer prüfen, ob die Bedingung, auf die gewartet wurde, wahr ist oder nicht. Wenn nicht, sollte die Thread anrufen und gehen Sie wieder wait().

Verwandte Themen