工具类-ThreadUtil线程池命名

工具类-ThreadUtil线程池命名

  • 先引入guava依赖
  • 定义工具类
  • 使用工具类命名各个线程

线程池命名可以方便以后排查问题,根据线程就知道哪个业务逻辑出了问题。

先引入guava依赖

<dependency>
    <groupId>com.google.guavagroupId>
    <artifactId>guavaartifactId>
    <version>20.0version>
dependency>

定义工具类

import com.google.common.util.concurrent.ThreadFactoryBuilder;
import java.util.concurrent.ThreadFactory;

public class ThreadUtil {
     

    public static ThreadFactory reNameThread(String name, boolean daemon) {
     
        return new ThreadFactoryBuilder()
                .setNameFormat(name + "--%d").setDaemon(daemon)
                .build();
    }

    public static ThreadFactory reNameThread(String name) {
     
        return reNameThread(name, false);
    }
}

使用工具类命名各个线程

@Slf4j
@Configuration
public class ThreadPoolConfig {
     

    /**
     * 
     * @return
     */
    @Bean("sendIscPool")
    public ThreadPoolExecutor sendIscPool(){
     
       return  new ThreadPoolExecutor(3,20,1, TimeUnit.MINUTES,new LinkedBlockingQueue<>(1024)
               , ThreadUtil.reNameThread("发送数据到社区")
               , (task,executor)->{
     
            try {
     
                executor.getQueue().put(task);
            } catch (InterruptedException e) {
     
                log.error("",e);
            }
        });
    }
}

你可能感兴趣的:(Java,多线程,thread)