线程池可以看做容纳线程的容器
一个应用程序最多只能有一个线程池;
ThreadPool静态类通过QueueUserWorkItem()方法将工作函数排入线程池;
每排入一个工作函数,就相当于请求创建一个线程;
一、线程池的作用:
线程池是为突然大量爆发的线程设计的,通过有限的几个固定线程为大量的操作服务,减少了创建和销毁线程所需的时间,从而提高效率。
如果一个线程的时间非常长,就没必要用线程池了(不是不能作长时间操作,而是不宜。),况且我们还不能控制线程池中线程的开始、挂起、和中止。
二、传统新建线程的方式:
(1)new Thread 对象继承Thread的时候。
public class ThreadTest2 extends Thread {
private int threadCnt = 10;
@Override
public void run() {
while (true) {
if (threadCnt > 0) {
System.out.println(Thread.currentThread().getName() + " 剩余个数 " + threadCnt);
threadCnt--;
try {
Thread.sleep(30);
} catch (InterruptedException e) {
e.printStackTrace();
}
} else {
break;
}
}
}
三、线程池线程数量
获取线程池线程数量:
- GetMaxThreads
- GetMinThreads
设置线程池线程数量:
- SetMaxThreads
- SetMinThreads