- Java并发
- 什么是线程池?
- 使用线程池的步骤
- 手动创建线程池对象
- 执行任务
- 执行完毕,释放线程对象
- 线程池优点
- 优:提高线程的利用率,提高程序的响应速度,便于统一管理线程对象,可以控制最大的并发数。
- 通过设置线程池的参数,控制线程池的容量,进而控制系统的最大并发量。
- 画图解释
- 系统层面解释
- 举个生活中的例子解释 ----》银行办理业务。
- 代码展示实现。
import org.junit.Test;
import java.util.concurrent.*;
public class ThreadPoolTest {
@Test
public void ThreadPool() {
//1、JUC工具包给我们提供了这样的一个类, 通过这个类, 可以直接创建线程池对象
//2、其中一共有7个参数,①核心线程池数,②最大线程数,③存活时间 多长时间没有接到任务, 就可以下班回家了,④时间单位(秒),⑤等待队列,⑥线程工厂,⑦拒绝策略(直接抛异常的方式)
ExecutorService executorService = new ThreadPoolExecutor(3, 5, 1L, TimeUnit.SECONDS, new ArrayBlockingQueue<>(3), Executors.defaultThreadFactory());
//3、接待客户,i< 客户人数
for (int i = 0; i < 8; i++) {
//3.1、从线程池取线程对象
executorService.execute(() -> {
System.out.println(Thread.currentThread().getName() + " , 这个人在办理业务");
});
}
//4、关掉线程池
executorService.shutdown();
//5、来第9个会报错, 抛异常, 默认采用拒绝策略
}
}