java 線程狀態(tài) 如何用Java實現(xiàn)跨線程通信?
如何用Java實現(xiàn)跨線程通信?synchronized關鍵字用于實現(xiàn)線程間的通信。這種方式本質上是“共享內存”通信。多個線程需要訪問同一個共享變量。誰拿到鎖誰就可以執(zhí)行。如果線程a改變了條件,線程B會
如何用Java實現(xiàn)跨線程通信?
synchronized關鍵字用于實現(xiàn)線程間的通信。
這種方式本質上是“共享內存”通信。多個線程需要訪問同一個共享變量。誰拿到鎖誰就可以執(zhí)行。
如果線程a改變了條件,線程B會通過while語句不斷檢查條件是否為真,從而實現(xiàn)線程間的通信。但是這種方法會浪費CPU資源。您可以參考以下示例:
wait()方法可以使線程進入等待狀態(tài),notify()方法可以使等待狀態(tài)喚醒。這種同步機制非常適合生產者和消費者模式:消費者消費資源,生產者生產資源。當資源丟失時,使用者調用wait()方法自阻塞并等待生產者的產品。生產者完成后,調用notify/notifyAll()來喚醒消費者進行消費。
使用管道通信java.io.PipedInputStream文件& ampjava.io.PipedOutputStream前兩個是面向字節(jié)的,后兩個是面向字符的。以下是一些示例: