池化技术和线程池的使用(三大方法,7大参数,4种拒绝策略)
- 池化技术:事先准备好一些资源,有需要用就拿,用完再还回来
- 线程池的好处:
*降低资源的消耗:线程的不停的创建销毁会十分浪费资源
*提高响应的速度
*方便管理
线程复用,可以控制最大并发数,以及管理线程
- 线程池的学习路线:(三大方法,7大参数,4种拒绝策略)
第一步:三大方法(线程池的三大方法(Exector工具类下有三大方法))
阿里巴巴规范:(线程池最好使用ThreadPoolExecutor,而不是Executors)
方法1、单个线程(创建只有一个单个线程的线程池方法)
!!!使用线程池后就要用线程池来创建线程(线程池的.execute()),线程池使用完后,程序结束,还必须要关闭线程池(.shutdown)(如何确保程序一定结束(放到finally咯))
只有一个线程在操作
方法2、线程池有固定数的多个线程(也就是有多个并发)
有5个线程在执行了
方法3、线程池的线程随着我们并发的线程多少来增加
可以看到最多有30个并发线程了
package org.example.threadpoolexecutor;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class TestThreadPoolExecutorThere {
public static void main(String[] args) {
// ExecutorService threadPool = Executors.newSingleThreadExecutor();//单个线程的线程池
// ExecutorService threadPool = Executors.newFixedThreadPool(5);//设定固定线程个数的线程池
ExecutorService threadPool = Executors.newCachedThreadPool();//可以随着使用的线程个数变化而而变化的线程池
try {
for (int i = 1; i <=100 ; i++) {
threadPool.execute(()->{
System.out.println(Thread.currentThread().getName()+"=>ok");
});
}
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
threadPool.shutdown();
}
}
}