Java-what';遗嘱执行人有什么了不起的?

Java-what';遗嘱执行人有什么了不起的?,java,executor,Java,Executor,在没有Java执行器的情况下,必须为每个可运行任务创建新线程。创建新线程需要线程开销(创建和拆卸),这会增加非执行程序的复杂性和浪费时间 参考代码: 没有Java执行器- new Thread (aRunnableObject).start (); Executor executor = some Executor factory method; exector.execute (aRunnable); 使用Java执行器- new Thread (aRunnableObject).star

在没有Java执行器的情况下,必须为每个可运行任务创建新线程。创建新线程需要线程开销(创建和拆卸),这会增加非执行程序的复杂性和浪费时间

参考代码:

没有Java执行器-

new Thread (aRunnableObject).start ();
Executor executor = some Executor factory method;
exector.execute (aRunnable);
使用Java执行器-

new Thread (aRunnableObject).start ();
Executor executor = some Executor factory method;
exector.execute (aRunnable);
底线是执行者抽象出如何管理线程的底层细节

这是真的吗

谢谢

底线是执行者抽象出如何管理线程的底层细节。这是真的吗

它们处理的问题包括创建线程对象、维护线程池、控制正在运行的线程数以及正常/不正常关闭。手工做这些事情不是小事

编辑

这样做可能会影响性能,也可能不会影响性能。。。与完全根据应用程序的精确需求调整的自定义实现相比。但机会在于:

  • 您的自定义实现不会得到完美的调整,而且
  • 无论如何,性能差异不会太大
  • 此外,如果存在需要解决的问题,Executor支持类允许您简单地调整各种参数(例如线程池大小)。我看不出使用执行器会对垃圾收集开销产生多大的影响

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

  • 您的应用程序运行“太慢”,并且
  • 分析工具告诉您,您在某个特定领域遇到了问题

  • 与普通线程相比,执行器有两个优点

  • 通过改变线程池的大小可以轻松实现节流。这有助于控制/检查流经应用程序的线程数。在对应用程序进行承重基准测试时特别有用
  • 使用RejectionHandler可以更好地管理可运行任务
  • 我认为执行者所做的只是他们将完成低级任务 但您仍然必须明智地决定使用哪个线程池 你想要的。我是说如果你的用例最多需要5个线程 使用有100个线程的线程池,那么它肯定会 对绩效有影响。除此之外,没有什么额外的 在低水平上进行,这将使系统停止。最后的 总之,在低成本下了解正在做的事情总是更好的 使我们对地下事物有一个公平的认识


    执行器更易于使用,因为它们处理低级线程管理。有没有演出热播?我脑子里在想-垃圾收集::手动内存管理:执行器::线程
    executor
    是一个接口,因此您经过完美调优的自定义实现实际上可以是
    执行器。然后,如果结果证明没有进行如此完美的调优,您可以轻松地切换实现。:)执行者提供的抽象非常轻量级,从某种意义上说,他们没有做那么多。对于fixedThreadPool,有一个队列和一些等待的线程。如果有工作,他们会做的。但这基本上就是全部,所以这不太可能给你任何性能上的打击。”…所以这不太可能给你任何性能上的打击”-事实上。我甚至可以说,由于“自己滚动”代码中的(潜在)错误,不使用执行器更有可能会影响性能。编写自己的线程池有什么好处?