执行程序优于新线程的优点

Cha*_*ase 16 java multithreading executorservice threadpool

在Java程序中使用Executors而不仅仅是Threads有什么好处.

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

    //vs

    //Executor
    pool.execute(new SomeRunnable());
}
Run Code Online (Sandbox Code Playgroud)

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

Lou*_*man 7

是的,执行程序通常会将runnable复用到它们创建的线程上; 他们会限制和管理一次运行的线程数量; 他们会更容易定制并发级别.通常,执行程序应该优先于创建裸线程.


Bla*_*ood 5

创建新线程非常昂贵.因为Executors使用线程池,所以您可以轻松地重用线程,从而获得更好的性能.