在没有Java Executors的生活中,必须为每个Runnable任务创建新线程。创建新线程需要线程开销(创建和拆除),这增加了复杂性并浪费了非执行程序的时间。
参考代码:
没有Java Executor -
new Thread (aRunnableObject).start ();
使用Java Executor -
Executor executor = some Executor factory method;
exector.execute (aRunnable);
底线是Executors抽象出如何管理线程的低级细节。
这是真的吗?
感谢。
答案 0 :(得分:11)
底线是Executors抽象出如何管理线程的低级细节。这是真的吗?
是
它们处理诸如创建线程对象,维护线程池,控制正在运行的线程数以及正常关闭的优雅/更少等问题。手工完成这些事情并非易事。
修改强>
与完全根据应用程序的精确需求完成调整的自定义实现相比,可能会或可能没有性能影响。但机会是:
此外,如果存在需要解决的问题,Executor支持类允许您简单地调整各种参数(例如线程池大小)。我没有看到使用Executors,无论是这样还是另一种方式,垃圾收集开销都会受到严重影响。
作为一般规则,您应该专注于简单而健壮地编写应用程序(例如,使用高级并发支持类),并且只在以下情况下担心性能:
答案 1 :(得分:1)
执行程序的一些好处与正常线程相比。
答案 2 :(得分:0)
我认为执行人员所做的就是他们将完成低级任务 对你而言,你仍然需要明智地决定哪个线程池做 你要。我的意思是如果你的用例需要最多5个线程,你就去了 并使用具有100个线程的线程池,然后肯定会 对性能有影响。除此之外,还有额外的 在低水平完成,这将停止系统。最后一个 总而言之,总是更好地了解在低处完成的工作 水平,这将使我们对地下事物有一个公平的认识。