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 ServiceExecutor 终止条件

java - 当分隔符不固定时提取部分字符串

java - 当两个java桌面应用程序使用相同的SQLite数据库时如何避免sql异常

java - 如何在完成当前执行的任务后关闭 CompletionService

java - 无法理解在 ConcurrentHashMap 中重写 equals 方法的优势

java - 为什么在字段变量上同步并在同步块(synchronized block)内递增它会导致打印乱序?

java - 将 Maven 项目转换为多模块项目的子模块?

java - 反射找不到对象子类型

java - 如何使用 Java 邮件标记跟进

c# - 显式实现 IAsyncResult