日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

wait()和sleep()

發(fā)布時(shí)間:2024/2/28 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 wait()和sleep() 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

sleep()

使讓線程睡眠一定的時(shí)間,不釋放任何鎖,但是它過了睡眠時(shí)間后,不一定能獲得執(zhí)行的時(shí)間!最終的調(diào)度是由CPU決定的!Thread.sleep() 是可以從任何上下文調(diào)用的靜態(tài)方法。Thread.sleep() 暫停當(dāng)前線程

wait()

是一個(gè)用于線程同步的實(shí)例方法。它可以在任何對(duì)象上調(diào)用,因?yàn)樗x在 java.lang.Object 上, 但只能從同步塊中調(diào)用。它釋放對(duì)象上的鎖,以便另一個(gè)線程可以跳入并獲取鎖。wait 從字面上來理解的話,它具有等待的意思。它等待?notify 或 notifyAll 對(duì)其喚醒!如果直接調(diào)用 wait 會(huì)拋出 java.lang.IllegalMonitorStateException 異常,原因是還沒有得到對(duì)象鎖,所以無法釋放鎖。

sleep 與 wait 的區(qū)別

  • sleep()線程控制自身流程。

  • wait()用來線程間通信,使擁有該對(duì)象鎖的線程等待直到指定時(shí)間或notify()

  • wait()會(huì)釋放鎖和監(jiān)視器,sleep()不釋放任何鎖或監(jiān)視器等

  • wait()用于線程間通信,而sleep()用于在執(zhí)行時(shí)引入暫停

  • 適用區(qū)域,wait只能放在同步語句塊中才有意義

  • sleep來自Thread類,和wait來自O(shè)bject類

  • sleep必須捕獲異常,而wait,notify和notifyAll不需要捕獲異常

  • sleep是Thread的靜態(tài)類方法,誰調(diào)用的誰去睡覺,即使在a線程里調(diào)用了b的sleep方法,實(shí)際上還是a去睡覺,要讓b線程睡覺要在b的代碼中調(diào)用sleep

  • Thread.Sleep(0)的作用是“觸發(fā)操作系統(tǒng)立刻重新進(jìn)行一次CPU競(jìng)爭(zhēng)”

  • wait方法一旦過了超時(shí)時(shí)間,并不需要其他線程執(zhí)行notify也能自動(dòng)解除阻塞,但是如果沒設(shè)置超時(shí)時(shí)間的wait方法必須等待其他線程執(zhí)行notify

總結(jié)

以上是生活随笔為你收集整理的wait()和sleep()的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。