/*
執行緒間通訊:
其實就是多執行緒在操作同乙個資源。
但是操作的動作不同
*/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方法後,該執行緒進入就緒...