2017-02-21 3 views

Antwort

0

sleep(): Es ist eine statische Methode für die Thread-Klasse. Der aktuelle Thread wird für eine bestimmte Zeit in den Status "Nicht ausführbar" versetzt. Während dieser Zeit behält der Thread die Sperre (Monitore) bei, die er erhalten hat.

wait(): Es ist eine Methode für die Objektklasse. Der aktuelle Thread wird in den Status "Nicht ausführbar" versetzt. Wait wird für ein Objekt und nicht für einen Thread aufgerufen. Vor dem Aufruf der Methode wait() sollte das Objekt synchronisiert werden, dh das Objekt sollte sich innerhalb des synchronisierten Blocks befinden. Der Aufruf von wait() gibt die erfasste Sperre frei. ZB:

synchronized(LOCK) { 
    Thread.sleep(1000); // LOCK is held 
} 

synchronized(LOCK) { 
    LOCK.wait(); // LOCK is not held 
} 

kategorisieren lassen Sie alle oben genannten Punkte:

Anruf auf:

wait(): Call on an object; current thread must synchronize on the lock object. 
sleep(): Call on a Thread; always currently executing thread. 

Synchronisiert:

wait(): when synchronized multiple threads access same Object one by one. 
sleep(): when synchronized multiple threads wait for sleep over of sleeping thread. 

Haltesperre:

wait(): release the lock for other objects to have chance to execute. 
sleep(): keep lock for at least t times if timeout specified or somebody interrupt. 

Wake-up-Zustand:

wait(): until call notify(), notifyAll() from object 
sleep(): until at least time expire or call interrupt(). 

Verbrauch:

sleep(): for time-synchronization and; 
wait(): for multi-thread-synchronization. 
Verwandte Themen