是否有理由更喜欢这样做:
private static ExecutorService service = Executors.newScheduledThreadPool(10);
对此:
private static ExecutorService service = new ScheduledThreadPoolExecutor(10);
是否有理由更喜欢这样做:
private static ExecutorService service = Executors.newScheduledThreadPool(10);
对此:
private static ExecutorService service = new ScheduledThreadPoolExecutor(10);
没有特别的原因,没有。静态方法是为了方便而Executors
编写的,旨在涵盖大部分标准用例。
尽管不是您提到的情况,但使用其他一些静态方法会使您的代码更加简单且更具可读性。例如:
threadPool = Executors.newFixedThreadPool(10);
相对:
threadPool = new ThreadPoolExecutor(10, 10, 0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>());
我能想到为什么使用这些Executors
方法会更好的唯一可能原因是,如果在未来的 JDK 版本中,他们更改了一些底层ExecutorService
类的默认值,然后 Sun/Oracle 会调整静态方法以更好地利用新的构造函数参数,您不必更改代码。