如何在Java中使用ExecutorService(一个池Executors.newFixedThreadPool()或几个Executors.newSingleThreadExecutor())

时间:2019-01-09 15:36:38

标签: java executorservice

鉴于多次调用someMethod()方法,如何最好地使用executorService:

我正在使用:

    public void someMethod() {
        ExecutorService executorService = Executors.newSingleThreadExecutor();
        Future future = executorService.submit(() -> method());
    }

或者我应该这样使用它

    ExecutorService executorService = Executors.newFixedThreadPool(8);

    public void someMethod() {
        Future future = executorService.submit(() -> method());
    }

1 个答案:

答案 0 :(得分:0)

创建线程池执行程序是一项昂贵的操作,您还需要在不需要它们时停止线程池(否则它将阻止JVM退出)。

所以第二种选择更可取。

拥有共享主题池的唯一缺点是,其他一些代码可能会提交长时间运行的任务,并且您在someMethod()中提交的任务可能需要等待空闲的工作线程。