亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

有沒有比 Await 更好的方法來使用 CountUpDownLatch?

有沒有比 Await 更好的方法來使用 CountUpDownLatch?

幕布斯6054654 2021-10-27 10:47:09
我正在使用向上/向下計數鎖存器將程序限制為 6 個線程,它可以工作,但我真正想要的是始終運行 6 個線程。這樣當一個線程死亡時,另一個線程會啟動。在下面的實現中,只要超時到期,它一次只創建 6 個新線程。關于如何構建我的循環來實現這一點的任何建議?int numThreads = 6;CountUpDownLatch threadCounter = new CountUpDownLatch();for(int t = 1; t <= numThreads; t++) {    while(list.hasNext()) {    new Thread(new ThreadController("processData",list.next())).start();    threadCounter.countUp();    }    try {        threadCounter.await(5, TimeUnit.MINUTES);    } catch (InterruptedException e) { e.printStackTrace(); }}
查看完整描述

1 回答

?
莫回無

TA貢獻1865條經驗 獲得超7個贊

使用包含 6 個線程的執行程序服務,


ExecutorService exec = Executors.newFixedThreadPool(6);

for (int i = 0; i < 10; i++) {

    exec.submit(() -> System.out.println("Hello"));

}

exec.shutdown();

您可以通過一個Runnable或一Callable對submit的方法ExecutorService。在這里,我傳遞了一個 lambda 函數作為Runnable從 Java8 開始有效的 a。在你的情況下,你可以這樣做,


exec.submit(new ThreadController("processData",list.next()));


查看完整回答
反對 回復 2021-10-27
  • 1 回答
  • 0 關注
  • 178 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號