创建和销毁线程非常损耗性能。通过创建线程池,可以复用创建好的线程。线程的创建需要开辟虚拟机栈、本地方法栈、程序计数器等线程私有的内存空间,在线程销毁时需要回收这些系统资源,频繁地创建销毁线程会浪费大量资源,而通过复用已有线程可以更好地管理和协调线程的工作。
线程池主要解决两个问题:
一、 当执行大量异步任务时线程池能够提供很好的性能。
二、 线程池提供了一种资源限制和管理的手段,比如可以限制线程的个数,动态新增线程等。
参考代码
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class TestnewSingleThreadExecutor {
public static void main(String[] args) {
//newSingleThreadExecutor 创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按先进先出的顺序执行。
ExecutorService newSingleThreadExecutor = Executors.newSingleThreadExecutor();
int len = 5;
for (int i = 0; i < 5; i++) {
final int taskID = i;
// 向线程池中提交任务
newSingleThreadExecutor.submit(new Runnable() {
@Override
public void run() {
System.out.println("线程: "+Thread.currentThread().getName()+" 正在执行任务 taskID: "+taskID);
}
});
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
代码输出结果
线程: pool-1-thread-1 正在执行任务 taskID: 0
线程: pool-1-thread-1 正在执行任务 taskID: 1
线程: pool-1-thread-1 正在执行任务 taskID: 2
线程: pool-1-thread-1 正在执行任务 taskID: 3
线程: pool-1-thread-1 正在执行任务 taskID: 4
参考:
https://blog.csdn.net/ChinaDragon10/article/details/116976033