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

固定线程池立即退出,不处理线程

固定线程池立即退出,不处理线程

慕姐8265434 2021-10-27 13:55:59
试图理解固定线程池我做了这个测试代码,它显示了以下结果,与我认为它会做的相反:Thread Start: 1Thread Start: 2Thread Start: 0就是这样。没有“线程结束”消息,仅启动了 3 个线程。我期望并且我希望完成所有 10 个任务。ExecutorService exec = Executors.newFixedThreadPool(3);for (int c = 0; c < 10; c++) {    exec.execute(new TestThread(c));}exec.shutdown();public class TestThread implements Runnable {    private int counter;    public TestThread (int counter) {        this.counter = counter;    }    @Override    public void run() {        System.out.println("Thread Start: " + counter);        try {            Thread.sleep(1000);        } catch (InterruptedException e) {            e.printStackTrace();        }        System.out.println("Thread End: " + counter);    }}
查看完整描述

1 回答

?
达令说

TA贡献1821条经验 获得超6个赞

exec.shutdown()不阻塞主线程。如果您需要等待所有提交的任务完成,您需要exec.awaitTermination(1, TimeUnit.HOUR);在调用exec.shutdown();.


/**

 * Blocks until all tasks have completed execution after a shutdown

 * request, or the timeout occurs, or the current thread is

 * interrupted, whichever happens first.

 */

boolean awaitTermination(long timeout, TimeUnit unit)

    throws InterruptedException;


查看完整回答
反对 回复 2021-10-27
  • 1 回答
  • 0 关注
  • 160 浏览

添加回答

举报

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