在Spring中命名线程

时间:2018-03-24 11:00:14

标签: java spring spring-boot

我认为总是建议为线程命名,以便以后更容易调试。

在我的SpringBoot项目中,我现在使用@Async表示法,稍后使用TaskExecutor,但找不到命名我的线程的方法。

有没有办法做到这一点,或者没有真正在Spring抽象中完成?

2 个答案:

答案 0 :(得分:3)

Spring中的

TaskExecutor是一个直接从Java Executor扩展的功能接口。根据文件:

  

执行提交的Runnable任务的对象。 此界面   提供了一种将任务提交与如何提交的机制分离的方法   将运行每个任务,包括线程使用的详细信息,日程安排,   等

这意味着不可能(也不应该要求)为您的线程命名,因为您不负责启动和管理它。也就是说,出于调试目的,如果要提供某些名称,则应通过设置threadNamePrefix和/或threadGroupName属性来对线程池本身执行此操作。

答案 1 :(得分:2)

您可以在任务执行程序配置中使用线程前缀conf属性,或者如果前缀不够,则可以使用@Bean public TaskExecutor threadPoolTaskExecutor() { ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); executor.setThreadNamePrefix("my_thread_prefix"); executor.setThreadFactory( new ThreadFactoryBuilder().setNameFormat("my-thread-%d").build()) executor.initialize(); return executor; }

Uncaught SyntaxError: Unexpected token ,
Uncaught ReferenceError: openCity is not defined
at HTMLButtonElement.onclick (sortsearch?sortby=HightoLow&rankingsortby=HightoLow&searchItem=&criteria=:92)
at sortsearch?sortby=HightoLow&rankingsortby=HightoLow&searchItem=&criteria=:1495
Uncaught SyntaxError: Unexpected token }