理解執行緒同步

2022-09-05 20:39:14 字數 1021 閱讀 2891

1、首先確定一點:同步安全,非同步不安全。

2、結合例項,針對下面的使用場景:媽媽做蛋糕給兒子吃。

3、需求分析:

(a)蛋糕的數量是共享資料,應該放入臨界區。

(b)媽媽做蛋糕的時候,兒子不能吃;兒子吃蛋糕的時候,媽媽不能做。

(c)假設兒子很餓,媽媽做乙個,兒子吃乙個,媽媽做好乙個後,等待兒子去吃,吃完後再去做,但是,如果兒子貪玩,很長時間都沒吃完乙個蛋糕,媽媽就不管了。繼續做蛋糕。

(d)有一點是肯定的:必須要蛋糕,兒子才能吃,也就是說,如果蛋糕沒了,兒子必須等待媽媽做好蛋糕,並且必須一直等下去,知道媽媽做出蛋糕。

(e)媽媽做好蛋糕後,通知兒子吃蛋糕;兒子吃完蛋糕後,通知媽媽繼續做蛋糕。

注意:為了避免當前執行緒一直等下去,也就是出現死鎖,有兩個辦法:

1、當前執行緒呼叫monitor.wait(sync,5000); 加上時間限制,等待超時,就不等了,進入就緒狀態,準備執行。

2、互斥的執行緒呼叫monitor.pulse(sync); 通知當前執行緒。

1、首先確定一點:同步安全,非同步不安全。

2、結合例項,針對下面的使用場景:媽媽做蛋糕給兒子吃。

3、需求分析:

(a)蛋糕的數量是共享資料,應該放入臨界區。

(b)媽媽做蛋糕的時候,兒子不能吃;兒子吃蛋糕的時候,媽媽不能做。

(c)假設兒子很餓,媽媽做乙個,兒子吃乙個,媽媽做好乙個後,等待兒子去吃,吃完後再去做,但是,如果兒子貪玩,很長時間都沒吃完乙個蛋糕,媽媽就不管了。繼續做蛋糕。

(d)有一點是肯定的:必須要蛋糕,兒子才能吃,也就是說,如果蛋糕沒了,兒子必須等待媽媽做好蛋糕,並且必須一直等下去,知道媽媽做出蛋糕。

(e)媽媽做好蛋糕後,通知兒子吃蛋糕;兒子吃完蛋糕後,通知媽媽繼續做蛋糕。

注意:為了避免當前執行緒一直等下去,也就是出現死鎖,有兩個辦法:

1、當前執行緒呼叫monitor.wait(sync,5000); 加上時間限制,等待超時,就不等了,進入就緒狀態,準備執行。

2、互斥的執行緒呼叫monitor.pulse(sync); 通知當前執行緒。

理解執行緒同步

1 首先確定一點 同步安全,非同步不安全。2 結合例項,針對下面的使用場景 媽媽做蛋糕給兒子吃。3 需求分析 a 蛋糕的數量是共享資料,應該放入臨界區。b 媽媽做蛋糕的時候,兒子不能吃 兒子吃蛋糕的時候,媽媽不能做。c 假設兒子很餓,媽媽做乙個,兒子吃乙個,媽媽做好乙個後,等待兒子去吃,吃完後再去做...

多執行緒中線程「同步」概念的理解

接觸執行緒很久了,一直就只知道多執行緒併發中很有可能引起執行緒安全問題,所以啊就需要進行執行緒同步,就是通過什麼synchronize,lock,volatile,juc並發包下的那幾個類,threallocal,aqs,原子變數和阻塞佇列啊等等這些實現同步,但回過頭來想想 同步 到底是個什麼?是執...

同步 執行緒同步

操作執行的先後順序。同步指兩個或兩個以上隨時間變化的量在變化過程中保持一定的相對關係。同步 英語 synchronization 指對在乙個系統中所發生的事件 event 之間進行協調,在時間上出現一致性與統一化的現象。在系統中進行同步,也被稱為及時 in time 同步化的 synchronous...