是否有理由更喜欢Executors工厂方法直接实例化类?

时间:2012-08-14 18:28:37

标签: java concurrency java.util.concurrent

是否有理由喜欢这样做:

private static ExecutorService service = Executors.newScheduledThreadPool(10);

对此:

private static ExecutorService service = new ScheduledThreadPoolExecutor(10);

1 个答案:

答案 0 :(得分:8)

没有特别的理由,没有。 Executors静态方法是为了方便而编写的,用于覆盖大部分标准用例。

虽然不是你提到的情况,但使用其他一些静态方法会使你的代码变得更加简单和易读。例如:

threadPool = Executors.newFixedThreadPool(10);

对战:

threadPool = new ThreadPoolExecutor(10, 10, 0L, TimeUnit.MILLISECONDS,
      new LinkedBlockingQueue<Runnable>());

我能想到为什么使用Executors方法可能更好的唯一可能原因是,如果在将来的JDK版本中,它们会更改某些基础ExecutorService类的默认值,静态方法会然后由Sun / Oracle调整以更好地使用新的构造函数参数,您不必更改代码。