當前位置:才華齋>計算機>java語言>

Java多執行緒通訊方法

java語言 閱讀(1.69W)

導語:多執行緒間通訊就是多個執行緒在操作同一資源,但是操作的動作不同,下面讓我們瞭解一下吧!

Java多執行緒通訊方法

  多執行緒通訊方法

(1)為什麼要通訊

多執行緒併發執行的時候, 如果需要指定執行緒等待或者喚醒指定執行緒, 那麼就需要通訊.比如生產者消費者的問題,

生產一個消費一個,生產的時候需要負責消費的程序等待,生產一個後完成後需要喚醒負責消費的執行緒,

同時讓自己處於等待,消費的時候負責消費的執行緒被喚醒,消費完生產的產品後又將等待的生產執行緒喚醒,

然後使自己執行緒處於等待。這樣來回通訊,以達到生產一個消費一個的目的`。

(2)怎麼通訊

同步程式碼塊中, 使用鎖物件的wait()方法可以讓當前執行緒等待, 直到有其他執行緒喚醒為止.

使用鎖物件的notify()方法可以喚醒一個等待的執行緒,或者notifyAll喚醒所有等待的執行緒.

多執行緒間通訊用sleep很難實現,睡眠時間很難把握。

停止執行緒的方法:

stop方法已經過時,如何停止執行緒?

停止執行緒的方法只有一種,就是run方法結束。如何讓run方法結束呢?

開啟多執行緒執行,執行程式碼通常是迴圈體,只要控制住迴圈,就可以讓run方法結束,也就是結束執行緒。

特殊情況:當執行緒屬於凍結狀態,就不會讀取迴圈控制標記,則執行緒就不會結束。

為解決該特殊情況,可引入Thread類中的Interrupt方法結束執行緒的凍結狀態;

當沒有指定的方式讓凍結執行緒恢復到執行狀態時,需要對凍結進行清除,強制讓執行緒恢復到執行狀態