欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

java 中sleep和wait

在Java中,有兩種常用的暫停線程的方式:sleep和wait。

sleep方法是Thread類自帶的方法,它可以讓當(dāng)前線程暫停一段時(shí)間。其常用語法如下:

try {
Thread.sleep(1000);//暫停1000毫秒,即1秒鐘
} catch (InterruptedException e) {
e.printStackTrace();
}

在實(shí)際應(yīng)用中,sleep方法的作用比較有限,因?yàn)樗煌V沽水?dāng)前線程,不會(huì)釋放對(duì)象鎖,也不會(huì)通知其他線程,因此其他線程還是會(huì)繼續(xù)競(jìng)爭同一資源。

相比之下,wait方法可以讓線程暫停并釋放對(duì)象鎖,同時(shí)還可以使線程掛起直到其他線程喚醒它。其常用語法如下:

synchronized(object){
try {
object.wait();//線程掛起等待喚醒
} catch (InterruptedException e) {
e.printStackTrace();
}
}

需要注意的是,wait方法必須在對(duì)共享資源進(jìn)行同步的情況下才能調(diào)用。如果當(dāng)前線程沒有獲得對(duì)象鎖,那么它就不能調(diào)用wait方法。

在多線程并發(fā)執(zhí)行的程序中,wait和notify的應(yīng)用非常廣泛。其中,wait一般用在線程間等待某個(gè)條件的出現(xiàn),而notify則是在某個(gè)條件出現(xiàn)(或操作完成)時(shí)通知正在掛起等待的線程。