A. java sleep() 和 wait() 有什麼區別
1、同步鎖的對待不同:
sleep()後,程序並不會不釋放同步鎖。
wait()後,程序會釋放同步鎖。
2、用法的不同:
sleep()可以用時間指定來使他自動醒過來。如果時間不到你只能調用interreput()來強行打斷。
wait()可以用notify()直接喚起。
3、屬於不同的類:
sleep()的類是Thread。
wait()的類是Object。
B. JAVA多線程suspend,resume和wait,notify的區別
suspend,使線程進入停滯狀態,除非收到resume消息,否則該線程不會變回可執行狀態。
wait():使一個線程處於等待狀態,並且釋放所持有的對象的lock;
sleep():使一個正在運行的線程處於睡眠狀態,是一個靜態方法,調用此方
法要捕捉InterruptedException異常;
notify():喚醒一個處於等待狀態的線程,注意的是在調用此方法的時候,
並不能確切的喚醒某一個等待狀態的線程,而是由JVM確定喚醒哪個線程,而且
不是按優先順序;
notityAll():喚醒所有處入等待狀態的線程,注意並不是給所有喚醒線程一
個對象的鎖,而是讓它們競爭。