执行器相对于新线程的优势

在Java程序中仅使用执行器而不是线程有什么好处。

ExecutorService pool = Executors.newFixedThreadPool(2);
void someMethod() {
    //Thread
    new Thread(new SomeRunnable()).start();

    //vs

    //Executor
    pool.execute(new SomeRunnable());
}

执行器是否只是限制它允许同时运行的线程数(线程池)?它是否真的将可运行项多路复用到它创建的线程上?如果不是,它只是一种避免每次都必须编写新的Thread(runnable).start()的方法吗?


答案 1

是的,执行器通常会将可运行项多路复用到他们创建的线程上;它们将约束和管理同时运行的线程数;它们将使自定义并发级别变得更加容易。通常,执行器应该优先于仅创建裸线程。


答案 2

创建新线程的成本很高。由于执行程序使用线程池,因此您可以轻松地重用线程,从而提高性能。