142 多執行緒 執行緒間通訊

2021-09-02 12:42:19 字數 1253 閱讀 3653

/*

執行緒間通訊:

其實就是多執行緒在操作同乙個資源。

但是操作的動作不同

*/class res

class input implements runnable

public void run()

else

x = (x+1)%2;}}

}class output implements runnable

public void run()}}

class inputoutput

}

執行結果:

哈哈--man

mike--女

mike--女

mike--女

哈哈--女

mike--女

哈哈--女

mike--女

哈哈--man

哈哈--man

哈哈--man

mike--女

哈哈--女

mike--man

mike--man

mike--man

mike--man

哈哈--女

哈哈--女

————————————————————————————————————

產生該結果原因在於:

兩個執行緒共同操作name和***,會出現情況是,執行緒input還沒賦值完,output就已經將

變數值輸出了。

操作共同資源的**為

while(true)

else

x = (x+1)%2;

}

while(true)

要加上同步。因為當前**中,只有r物件是唯一的,所以以r為synchronized傳遞的物件。

/*

執行緒間通訊:

其實就是多執行緒在操作同乙個資源。

但是操作的動作不同

*/class res

class input implements runnable

public void run()

else

x = (x+1)%2;}}

}}class output implements runnable

public void run()}}

}class inputoutput

}

多執行緒 執行緒間通訊

wait 方法的作用是使當前執行的執行緒進入等待,執行到 wait 一行進入等待 當執行緒被喚醒時從 wait 下一行開始執行。wait 方法需要在 synchronized 塊中呼叫,否則會報錯。wait 方法會釋放鎖,其它執行緒可以競爭獲得鎖 wait 方法有乙個帶時間引數的,當時間到了可以自動...

多執行緒 執行緒間通訊

學習思路 執行緒同步 鎖 wait notify join threadlocal 通過管道輸入 輸出流 字元流 位元組流 服務如果一直處於單執行緒訪問,那將毫無意義,多使用者訪問必然產生多執行緒,而多執行緒訪問必然離不開執行緒間通訊 多執行緒操作共享資源時勢必會產生執行緒安全的問題 也就是我們說的...

多執行緒3 執行緒間通訊

這兩種方法都要在同步 塊或同步方法中呼叫。都需要先獲得物件級別的鎖。只有兩個方法的物件鎖一致,即 物件監視器 一致,再能通過notify方法通知到執行wait方法的執行緒繼續執行。使用wait方法後,該執行緒會釋放物件鎖,並進入阻塞佇列等待被喚醒。notify方法喚醒wait方法後,該執行緒進入就緒...