[英]How to understand if your application has finished computing in a multithreading consumer-producer scenario in Java
我正在嘗試使用 Java 進行多線程處理,這是我以前從未做過的事情。 我目前正在嘗試設計的寵物應用程序有一個阻塞隊列和幾個工作人員。 該應用程序遵循以下規則:
如果出現以下情況,應用程序應該退出:
基本上,一旦所有消息都被消耗掉並且系統中不再產生/存在更多消息,我就會退出。 保證應用程序最終達到這一點。
現在我的問題是,我不確定什么是最佳實踐/設計來理解上述條件是真實的,避免賽車條件。 有什么幫助嗎?
我目前處於設計階段,所以我沒有代碼可以向您展示,抱歉(我知道我此時的問題很籠統,所以請隨時問我任何問題)。 歡迎任何建議!
提前致謝!
一種方法是讓每個工作人員在 AtomicInteger 開始時加 1(表示它正在工作),然后在結束時減 1。 減去 1 后,如果 AtomicInteger 為 0,這意味着沒有“活躍”的工人。
所以當一個worker結束時,它會從atomicInteger中減去1,然后檢查如果隊列大小為零(沒有等待消息)和原子整數為零(沒有活躍的worker),就可以退出應用程序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.