是否有理由更喜欢这样做:
private static ExecutorService service = Executors.newScheduledThreadPool(10);
关于这个:
private static ExecutorService service = new ScheduledThreadPoolExecutor(10);
最佳答案
Is there a reason to prefer the Executors factory methods over instantiating the classes directly?
没有特别的原因,没有。 Executors
静态方法是为了方便而编写的,旨在涵盖大部分标准用例。
虽然不是在您提到的情况下,但使用其他一些静态方法会使您的代码更加简单和更具可读性。例如:
threadPool = Executors.newFixedThreadPool(10);
对比:
threadPool = new ThreadPoolExecutor(10, 10, 0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>());
我能想到为什么使用 Executors
方法会更好的唯一可能原因是,如果在未来的 JDK 版本中,它们更改了一些底层 ExecutorService
的默认值然后,Sun/Oracle 将调整类和静态方法以更好地利用新的构造函数参数,而您不必更改代码。
关于java - 是否有理由更喜欢 Executors 工厂方法而不是直接实例化类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11958494/