phaser

    2熱度

    1回答

    我實現了MyListener這是從兩個不同的線程訪問。 class MyListener implements Listener { private final Phaser phaser = new Phaser(2); @Override public void changed() { phaser.arrive(); }

    1熱度

    1回答

    我在主線程等待的工作線程終止,然後(在某些情況下),我開始這些線程,並再次等待終止等 調用join()作品好吧,但我想更快地做到這一點。 移相器看起來像我在尋找什麼,但我做錯了什麼: //*** application start *** //create "empty" Phaser //*** main thread *** //event occured - start workin

    0熱度

    1回答

    我正在使用Phaser嘗試在我的java代碼中進行一些同步。該文件不斷提及已註冊/未註冊的「派對」...... 在這種情況下什麼是「派對」?它是否涉及單個執行線程?我繼續從各種來源的文檔,但他們都假設知識。是否有一些基本的併發文本可以閱讀,以便更好地理解正在發生的事情? 我的理解是,對於代碼中發生的每個「註冊」,必須在主線程超過「arriAndAwaitAdvance」行之前出現相應的「arriv

    1熱度

    2回答

    一般問題 衆所周知的是移相器可以用來作爲JavaDocs和this blog了由Niklas Schlimm提到的所有任務的開始時間同步。 尼克拉斯已經引起了同步的一個非常可以理解的圖像: |Phaser |Phaser |Phaser | Task 1 | ------> | ------> | ------> | ... Task 2 | ------> | ------> | ---

    4熱度

    2回答

    考慮: Executor executor = ...; Phaser phaser = new Phaser(n); for (int i=0; i<n; ++i) { Runnable task = new Runnable() { public void run() { phaser.arriveAndDeregister();

    0熱度

    1回答

    我想產生一些線程,並將它們放在列表中,因爲它們執行。當他們完成他們的處理時,我想收集他們的結果進行演示。這樣我可以有一個包含多個線程的列表,然後一旦它們變得可用,我可以撥打future.get並使用它們的回調信息。 由於某種原因,我錯過了許多結果。當我通過代碼時,f.get()正在被傳遞,當它不應該是,我不明白爲什麼。 我的代碼如下: public class ThreadTesterRunne

    0熱度

    1回答

    只有在提交給線程池的所有任務完成後,我纔想從我的executeTasks()方法返回。請注意,我的線程池具有可配置的threadpoolsize,並使用SynchronousQueue作爲後備隊列,因此只有在線程可用時,我的for循環才能通過提交任務來安全地進行。所以,我只想等待最後的任務。我正在使用Phaser。 我創建了一個Phaser,其中包含1個註冊方,即當前線程,並且我在向線程池提交任務

    -1熱度

    1回答

    我明白我可以簡單地使用CountDownLatch直接,但是,作爲一個鍛鍊; Tibial和理解Phaser更好,我想用它代替的COuntDownLatch。 因此,我想創建N個awaiters的,這點需要翻轉閂一個線程。所有awaiters,如果翻轉之前到達,將阻塞,鎖存然而之後數下降,那麼以後所有await()回報瞬間。 與Phaser我不知道如何實現這一點...屏障很容易,因爲我們有N +

    1熱度

    1回答

    所以,我有這個靈活的Phaser,但它似乎缺少了一些東西。 我已經成功地使用了CyclicBarrier,但現在我也想要一些更靈活的東西,正如我所說的。因此,這裏是代碼: 聲明: private static final CountDownLatch synchronizer = new CountDownLatch(1); private static AtomicBoolean HAS_TI

    1熱度

    1回答

    按照javadoc,在Phaser類, 移相器可被分層(即,在樹形結構構成),以降低爭用。具有大量當事方的階段公司可能會遭遇嚴重的同步爭用成本,反而可能會設立一些分階段的小組以共享一個共同的母公司。這可能會大大增加吞吐量,即使它會導致更高的每操作開銷。 有人能澄清一下這個說法嗎,它給了我一些困惑。