3

是否有理由更喜欢这样做:

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

对此:

private static ExecutorService service = new ScheduledThreadPoolExecutor(10);
4

1 回答 1

8

没有特别的原因,没有。静态方法是为了方便而Executors编写的,旨在涵盖大部分标准用例。

尽管不是您提到的情况,但使用其他一些静态方法会使您的代码更加简单且更具可读性。例如:

threadPool = Executors.newFixedThreadPool(10);

相对:

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

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

于 2012-08-14T18:30:09.133 回答