簡體   English   中英

Java線程池同步

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM