執行緒間通訊不同步問題模擬

2021-09-25 06:14:33 字數 1221 閱讀 5422

一 點睛

下面兩種情況可造成執行緒間不同步:

1 生產者沒生產完,消費者就來消費。

2 消費者沒消費完,生產者又來生產,覆蓋了還沒來得及消費的資料。

二 **

class producer implements runnable

@override

public void run()

catch (interruptedexception e)

person.set***("男");

}else

catch (interruptedexception e)

person.set***("女");}}

}}class consumer implements runnable

@override

public void run()

catch (interruptedexception e)}}

}class person

public string getname( )

public string get***( )

public void setname(string name)

public void set***(string ***)

}public class threadcommunation

}

三 執行

張三 ---->女

張三 ---->男

李四 ---->男

李四 ---->男

張三 ---->女

李四 ---->男

張三 ---->女

李四 ---->男

張三 ---->女

張三 ---->女

李四 ---->男

李四 ---->男

李四 ---->男

張三 ---->男

李四 ---->男

李四 ---->男

張三 ---->女

張三 ---->男

李四 ---->男

張三 ---->男

四 說明

程式的意圖是設定person為(張三,男)或(李四,女),但由於生產者還沒生產完,就開始消費,所以出現了(張三,女)和(李四,男)的異常輸出。

執行緒間出現不同步現象

package comm class res class input implements runnable public void run else x x 1 2 class output implements runnable public void run public class inpu...

解決VmWare TSC不同步問題

tsc不同步的提示,從以前開始用vmware就有提示了,只是一直也沒注意啥,因為沒看出影響啥了。今天一啟動vmware,發現提示監測出的cpu頻率是2400 mhz,而windows報告的是1790mhz,心中暗想這太離譜了吧,難道vmware還能幫我偽超頻?接著是提示tsc不同步,繼續跳過,然後開...

執行緒間通訊 同步

同步 是指多個任務按照約定的先後次序 相互配合完成一件事情 訊號量 由訊號量決定 執行緒是繼續執行 還是阻塞等待 訊號量代表某種資源 其值表示系統中該資源的數量 訊號量是乙個受保護的量 只能通過特定的三種操作來訪問 初始化p操作 申請資源,有可能阻塞 v操作 釋放資源,不會阻塞 p s 操作 if ...