默认线程工厂的实现类源码:
线程工厂的主要工作就是创建线程,但是java提供的线程工厂对于线程的名字取法比较严格;
可以使用jdk中的工具查看:(jdk1.8下面的jvmm工具,打开之后可以看到线程线程之间的关系,排查是否存在死锁)
线程工厂中创建线程时使用了多个参数的构造器来实现:分别为,线程组,Runnable对象,线程的名字,以及线程编号,栈的大小;
线程名字:“pool-”加上线程池编号 “-thread-”;这个线程池的编号是一个原子类,整型原子类;并且使用getIncrement()方法,
package com.ydlclass.thread;
import com.ydlclass.lock.ThreadUtil;
//线程工厂的创建的线程名称是怎样的?
import java.util.concurrent.*;
public class ThreadFactoryTest {
public static void main(String[] args) {
ExecutorService executorService = Executors.newFixedThreadPool(10);
Runnable task = () -> {
ThreadUtil.sleep(10000);
System.out.println("执行一次");
};
for (int i = 0; i < 500; i++) {
ThreadUtil.sleep(10000);
executorService.submit(task);
}
}
}
执行玩脚本之后,下面的分析如下: