Java - Executors有什么好处?

BIl*_*Ill 3 java executor

在没有Java Executors的生活中,必须为每个Runnable任务创建新线程.创建新线程需要线程开销(创建和拆除),这增加了复杂性并浪费了非Executor程序的时间.

参考代码:

没有Java执行器 -

new Thread (aRunnableObject).start ();
Run Code Online (Sandbox Code Playgroud)

使用Java Executor -

Executor executor = some Executor factory method;
exector.execute (aRunnable);
Run Code Online (Sandbox Code Playgroud)

底线是Executors抽象出如何管理线程的低级细节.

真的吗?

谢谢.

Ste*_*n C 11

底线是Executors抽象出如何管理线程的低级细节.真的吗?

是.

它们处理诸如创建线程对象,维护线程池,控制正在运行的线程数以及优雅/更少正常关闭等问题.手工完成这些事情并非易事.

编辑

这样做可能会或可能不会有性能影响......与完全根据应用程序的精确需求进行调整的自定义实现相比.但机会是:

  1. 您的自定义实现将无法完美调整,并且
  2. 无论如何,性能差异不会很大.

此外,如果存在需要解决的问题,Executor支持类允许您简单地调整各种参数(例如线程池大小).我没有看到使用Executors,无论是哪种方式,垃圾收集开销都会受到严重影响.

作为一般规则,您应该专注于简单而强大地编写应用程序(例如,使用高级并发支持类),并且只在以下情况下担心性能:

  1. 你的应用程序运行"太慢",并且
  2. 分析工具告诉您在特定区域遇到问题.