使用Executors而不是Java程序中的Thread有什么好处。
如
ExecutorService pool = Executors.newFixedThreadPool(2); void someMethod() { //Thread new Thread(new SomeRunnable()).start(); //vs //Executor pool.execute(new SomeRunnable()); }
执行程序是否只是限制它允许一次运行的线程数(线程池)?它是否实际上将可运行对象多路复用到它创建的线程上?如果不是,那只是避免每次都必须写新的Thread(runnable).start()的一种方法?
是的,执行程序通常会将可运行对象多路复用到他们创建的线程上;他们将约束和管理一次运行的线程数;它们将使自定义并发级别变得容易得多。通常,执行者应该比仅创建裸线程更受青睐。