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

标签 java concurrency java.util.concurrent

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

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/

相关文章:

java - Exchanger 与 CountDownLatch

java - 如果一段代码没有在一定的时间限制内返回,如何在 Java 中导致一段代码超时?

java - 重用一个工作实例来处理多个任务

java - org.apache.pdfbox.pdmodel.PDDocument 无法加载/读取 PDF 文档

java - 唤醒java中等待的线程

java - Lucene Java 打开太多文件。我是否正确使用了 IndexWriter?

scala - MVar tryPut 返回 true 并且 isEmpty 也返回 true

JavaScript 异步与 C# 异步

java - 并行QuickSort中的Stackoverflow异常,输入变化很小

java - 类格式错误 : Unknown constant tag 58 in class file