使用 ThreadFactoryBuilder
使用guava的ThreadFactoryBuilder来创建线程池
栈不会溢出,合理化资源
package com.macro.mall.test.thread;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import org.apache.tomcat.util.threads.ThreadPoolExecutor;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.TimeUnit;
/**
* @author: craywen
* @date: 2020-08-25 10:19
* @desc:
*/
public class ExecutorsDemo {
private static ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
.setNameFormat("demo-pool-%d").build();
private static ExecutorService pool = new ThreadPoolExecutor(5, 100,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy());
public static void main(String[] args) {
for (int i = 0; i < Integer.MAX_VALUE; i++) {
pool.execute(new SubThread());
}
System.out.println("qqq");
}
private static class SubThread implements Runnable {
@Override
public void run() {
System.out.println(Thread.currentThread().getState()+"----------"+Thread.currentThread().getName());
}
}
}
核心线程数五个
Integer.MAX_VALUE 没有溢出。