我的應用程序將在運行時包含多個執行獨立工作的線程(在本例中爲7)。但是,每隔一段時間,線程將不得不同步他們的數據。等待多個線程時的最佳實踐 - 時間,數量還是其他?
這將由調用DataSynchronizer對象的線程完成,它們都有一個引用。
我對該類流量的想法是這樣的:
public class DataSynchronizer {
public void synchronizeData(List<Data> threadData) {
// Wait for all 7 threads to call this method
// When all 7 are here, hold them here & do work using one of the threads
// or a new anonymous thread
// Release the threads & let them continue their independent work
}
}
我的問題是,什麼是我做同步工作之前,「等待所有的x線」的最佳方式?
我知道所有線程都會在彼此的最大2秒內調用synchronizeData方法。
所以做我,
1)等待2秒第一個線程後調用方法,並承擔所有線程現在也來了嗎?或
2)保持計數以確保所有活動線程都已到達? (如果線程在調用方法之前崩潰,應用程序將等待永恆)
3)Count + timeout?
4)???
你可以使用[CountDownLatch(http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/CountDownLatch.html)與7 .. – TheLostMind 2014-11-03 10:19:29
可能重複的值[當設置窗體的不透明度,我應該使用一個十進制或雙?](http://stackoverflow.com/questions/4/when-setting-a-forms-opacity-should-i-use-a-decimal-or -double) – Unihedron 2014-11-03 16:43:12