[英]Java Thread Pool Synchronization
我想執行以下算法 - 這必須在Java中完成
for(int i = 0; i< 100; i++){
create 8 threads which perform a task
wait for all threads to finish
}
由於開銷(以及每個線程將具有<20毫秒的工作時間的事實),期望線程不被連續地創建和銷毀,這帶來了線程池1的想法。 我也知道使用Executable 2 ,可以調用shutdown,然后是awaitTermination。 然而,在這種情況下由於環路是不可取的。 那么如何進行線程同步呢?
我想在線程池中同步線程,就像使用傳統線程的join()方法一樣。
你試過看過Cyclic Barrier嗎? 它經過優化,允許一組線程停止並等待每個人都達到共同的障礙。 我沒有看到任何理由為什么它不能與已知數量的匯集線程一起使用,並引用了一個共同的障礙。 如果您需要在使用障礙await()
計數調用的回調上進行同步,則可能會有一些額外的復雜性,因為它在不同的線程中執行。
您需要將所有任務都放在隊列中,然后將隊列提供給ThreadPoolExecutor
。 您告訴線程池執行程序要使用多少個線程,它負責執行任務。
看看jdk 7的fork / join框架。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.