我们的软件倾向于使用大量线程池-主要是通过java.util.concurrent.ExecutorService实现(通过创建Executors.new...。我们为各种异步用例创建线程池,并且可以在各处看到它们。所有这些执行器都有线程工厂。它隐藏在默认的工厂方法,但您可以提供线程工厂;如果未提供,则在需要线程时使用默认的线程工厂。
使用spring时,可以使用创建
按名称区分线程好处:如果遇到性能问题,您可以研究各种选项:线程转储和使用top命令。我最喜欢的快速调查工具是top。更确切地说,top -H -p
按名称可以获得最多的CPU繁忙且当前处于活动状态的线程。在这些情况下,拥有自定义名称非常有用。
但是,您如何设置名称?通过在创建每个执行程序时指定一个命名线程工厂。这是一个有多种实现线程命名的方法的stackoverflow答案。
我使用的方法基于第二个答案:
public class AsyncUtils { |
并不是每个人都在使用Spring,有时,甚至一小部分功能甚至都可以在Spring bean之外使用执行者。因此,最好是采用这种方法。