線程間的協作wait,notify,sleep,yield,join

  • Java 併發編程:線程間的協作(wait/notify/sleep/yield/join)

    博文開始複習了下線程狀態,給出了線程狀態間的轉換圖示。

    以實例,源碼,解釋描述方式,闡述了wait, notify ,sleep等的功能 點。非常詳細。贊一個。

  • java sleep(),wait(),notify()函數區別

    幾句話描述了這幾者之間的相同和不同點,作爲面試題來回答,還是可以的。

  • wait、notify、sleep、interrupt對比分析

    這篇文章裏,給出了一個圖表,對比了wait和sleep的相同和不同,很精練。

  • Wait-Notify機制

    鎖機制。有介紹說Synchroniezd的鎖的機制。

    結束下面這篇博文,不看源碼,也能串起整個Synchronized的流程。

    包括warit(),notify()這些操作。

  • JVM源碼分析之Object.wait/notify實現

    太喜歡這個作者了,文章分析之詳盡,太棒了。一下子解決了鎖池、等待池、對象池這些虛頭巴腦的東西。

    重點在這個ObjectMonitor,醍醐灌頂!只能說自己太沒動力了,只要看了源碼,多麼的清晰明瞭,哪還會糾結這麼久!

  • JAVA併發編程:幹掉 Synchronized

    自己學習了上面的文章後,理解的Synchronized 整個流程。亂扯了一通,歡迎各位看官指正。

  • 自己總結:

    sleep()和wait()也算是面試常問的問題了。它倆也相愛相殺多年,瞭解了用途和原理後,其實很容易理解。

    會忘記主要也是用的少。做做筆記,多翻看才行。看再多,也得有自己的總結。能夠用自己組織的語音描述出來要表達的東西,纔是最好的。

    • 相同點
      • 都能使程序暫停
      • 都可以指定時間後自動醒來,※只是醒來後的動作不一樣※
      • 都可以在synchronized內使用,※調用後產生的結果不一樣※
      • 都可以通過interrupt()方法打斷線程的暫停狀態, 拋出InterruptedException
    • 不同點
      • 先說一點,其實兩個是完全不同的兩個東西。對比感覺就是硬比。硬撩的感覺,尬的不行。
      • 就好比開車一樣,sleep是讓速不讓道,道我還佔着,別人也過不來。wait是讓速又讓道,你們快你們走,我得等等。
      • 下面錯了表格來描述不同點,表格描述的很到位。
      • 方法 所屬類 方法類型 解除方法 場景 用途
        sleep Thread 靜態方法 不釋放鎖 timeout,interrupt 無限制 線程內的控制
        wait Object 非靜態方法 釋放鎖 timeout,notify,interrupt 同步語句塊 線程間的通信
    發表評論
    所有評論
    還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
    相關文章