为了账号安全,请及时绑定邮箱和手机立即绑定

有没有比 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 关注
  • 152 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信