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 - Java 中的生产者/消费者。为什么我们需要两个条件?

java - JDK 1.6 和 JDK 1.7 中 ConcurrentHashMap 的不同 `next` 条目

java - 如何保存JPA实体的副本?

java - 使用 ClassPathXmlApplicationContext 到 applicationContext.xml 的正确路径

java - 使用 Jena、Sparql 和初始 DBPedia URI 进行简单深度搜索

java - 在运行 Swing 应用程序中替换 AWT EventQueue 的安全方法

并发程序中的 Scala 模式匹配

java - 真实设备中不显示ImageView的图像

concurrency - 招聘经理希望开发人员理解哪些并发编程概念?

java - 由于 CPU 时间差异,ScheduledThreadPoolExecutor 执行时间错误