0

我想在不使用的情况下创建 ExecutorService 的对象

newSingleThreadExecutor(),

Executors.newFixedThreadPool()

和,

Executors.newScheduledThreadPool()

怎么做?这是我第一次使用 ExecutorService,谷歌搜索了很多以找到它是如何在没有定义任何“线程数”的情况下实例化的,但失败了。

4

2 回答 2

3

大多数工厂方法返回ThreadPoolExecutor或其子ScheduledThreadPoolExecutorjava.util.concurrent.Executors的实例。如果您检查 javadoc 的ExecutorService,那么您会发现这些是众所周知的实现。

Executors.newCachedThreadPool()如果您查看java.util.concurrent.Executors的源代码,可以避免打电话给您:

public static ExecutorService newCachedThreadPool() {
    return new ThreadPoolExecutor(0, Integer.MAX_VALUE,
                              60L, TimeUnit.SECONDS,
                              new SynchronousQueue<Runnable>());
}
于 2013-03-18T08:14:57.003 回答
0

那么为什么你不想使用工厂方法呢?

如果您创建一个执行器对象,您可以轻松地自己创建对象,就像这个工厂方法(已经)在做的那样:

public static ExecutorService newCachedThreadPool() {
    return new ThreadPoolExecutor(0, Integer.MAX_VALUE,
                                  60L, TimeUnit.SECONDS,
                                  new SynchronousQueue<Runnable>());
}
于 2013-03-18T08:13:06.543 回答