一個多線程題目的討論

題目:使用四個線程實現輸出ABCD,其中線程1輸出A,線程2輸出B,線程3輸出C,線程4輸出D,且要求線程1控制所有線程執行的次數。最終的輸出格式為ABCDABCD...(與輸入執行次數相關),線程的輸出順序是ABCD

思路:本人小白,緊做匯總,經過激烈討論,發現有兩個方法的思想比較好:

(1)使用消息通知和同步鎖機制,線程1輸出后通知線程2輸出,線程2輸出后通知線程3輸出,線程3輸出通知線程4輸出,線程4輸出通知線程1,形成一個線程執行環路。

(2)消費者首先通過監控者通知需要A,這時,當線程1符合要求時輸出A,通知監控者已輸出A,然后消費者依次通知需要BCDA...等

綜合比較,兩種思路是站在的角色角度不同,(1)是站在生產者角度考慮,生產者掌握控制權,主動提供數據。而(2)是生產者只負責提供數據,具體的掌控由消費者來控制。

所以,分清楚ABCD輸出順序是由誰控制的差別。生產者和消費者,一個負責生產,一個負責消費。

基于兩種思路,分別用代碼實現,具體代碼如下:

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容