Java - Executors有什么好处?

时间:2010-08-11 00:24:44

标签: java executor

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

参考代码:

没有Java Executor -

new Thread (aRunnableObject).start ();

使用Java Executor -

Executor executor = some Executor factory method;
exector.execute (aRunnable);

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

这是真的吗?

感谢。

3 个答案:

答案 0 :(得分:11)

  

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

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

修改

与完全根据应用程序的精确需求完成调整的自定义实现相比,可能会或可能没有性能影响。但机会是:

  1. 您的自定义实施将无法完美调整,
  2. 性能差异无论如何都不会很重要。
  3. 此外,如果存在需要解决的问题,Executor支持类允许您简单地调整各种参数(例如线程池大小)。我没有看到使用Executors,无论是这样还是另一种方式,垃圾收集开销都会受到严重影响。

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

    1. 您的应用程序运行“太慢”,
    2. 分析工具告诉您在某个特定区域遇到问题。

答案 1 :(得分:1)

执行程序的一些好处与正常线程相比。

  1. 通过改变ThreadPools的大小,可以轻松实现节流。这有助于控制/检查流经应用程序的线程数。在对承载应用进行基准测试时特别有用。
  2. 使用RejectionHandlers可以更好地管理Runnable任务。

答案 2 :(得分:0)

  

我认为执行人员所做的就是他们将完成低级任务   对你而言,你仍然需要明智地决定哪个线程池做   你要。我的意思是如果你的用例需要最多5个线程,你就去了   并使用具有100个线程的线程池,然后肯定会   对性能有影响。除此之外,还有额外的   在低水平完成,这将停止系统。最后一个   总而言之,总是更好地了解在低处完成的工作   水平,这将使我们对地下事物有一个公平的认识。