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

如何在Java中使用ExecutorService(一个池Executors.newFixedThreadPool()或多个Executors.newSingleThreadExecutor()),java,executorservice,Java,Executorservice,如果多次调用方法someMethod(),如何最好地使用executorService: 我现在正在使用: public void someMethod() { ExecutorService executorService = Executors.newSingleThreadExecutor(); Future future = executorService.submit(() -> method()); } 或者我应该这样使用它

如果多次调用方法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());
    }

创建线程池执行器是一项代价高昂的操作,而且您需要在不需要线程池时停止它们(否则会阻止JVM退出)

所以第二种选择更可取


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

你的目标是什么?你想归档什么?