執行緒間的通訊

2022-07-04 11:21:13 字數 1229 閱讀 8664

目的:有效利用資源

重點:對資源占用的判斷

使用sleep(long m)方法,執行緒睡醒進入runnable/blocked(阻塞狀態)

使用wait(long m),毫秒值結束之後,若未被喚醒,則會進入阻塞狀態

wait與notify必須在同步**塊或者同步方法中使用

通過鎖物件呼叫

public class threadwaitnotifyall  catch (interruptedexception e) }}

}.start();

new thread("消費者1執行緒") catch (interruptedexception e) }}

}.start();

//在建立乙個執行緒

new thread("老闆執行緒")

}}.start();

}}

建立乙個執行緒,告知另一線程需要通訊,讓其進入waiting狀態(無限等待)

建立乙個另一線程,喚醒上一線程

同步鎖物件必須保證唯一

只有鎖物件能呼叫wait()/notify()方法

void wait()

在其他執行緒呼叫此物件的 notify() 方法或 notifyall() 方法前,導致當前執行緒等待。

void notify()

喚醒在此物件監視器上等待的單個執行緒。

void notifyall()

喚醒在此物件監視器上等待的所有執行緒,會繼續執行wait之後的方法

public class threadstate  catch (interruptedexception e) }}

}.start();

//在建立乙個執行緒

new thread("老闆執行緒") catch (interruptedexception e)

//喚醒乙個執行緒

synchronized (obj)

//休息會兒讓上面的執行緒先走

try catch (interruptedexception e)

//上面執行緒結束

system.out.println("老闆:不客氣");

}}.start();

}}

執行緒間的通訊

執行緒間的通訊 簡單說明 執行緒間通訊 在1個程序中,執行緒往往不是孤立存在的,多個執行緒之間需要經常進行通訊 執行緒間通訊的體現 1個執行緒傳遞資料給另1個執行緒 在1個執行緒中執行完特定任務後,轉到另1個執行緒繼續執行任務 執行緒間通訊常用方法 06 nsthread04 執行緒間通訊 impo...

執行緒間的通訊

1.執行緒間的通訊 多個執行緒處理同乙個資源,但處理的動作卻不同 2.執行緒間的有效通訊 使用等待喚醒機制,實現協調通訊,讓執行緒間進行有規律的執行 3.條件 3.1 wait方法與notify方法必須由同乙個鎖物件呼叫,因為,對應的鎖物件可以通過notify喚醒使用同乙個物件呼叫的wait方法後的...

執行緒間的通訊

常用的 wait notify notifyall 在乙個執行緒裡面,喚醒其他擁有同樣的鎖的執行緒 使用wait notify notifyall 時,塊必須上鎖 author fzz public class communicate catch interruptedexception e sys...