一、线程池
是一种池化思想:线程池,字符串常量池,数据库连接池
提高资源的利用率
1、需要手动创建线程对象
2、执行任务
3、执行完毕,释放线程对象
排队,出现等待队列
线程的优点:
1、提高线程的利用率
2、提高程序的响应速度
3、便于统一管理线程对象
4、可以控制最大并发数
例如银行业务办理,默认开通3的窗口,业务繁忙时会增加业务办理窗口开放,最多开放5个窗口,等候区最多3人等待,再进一人会触发拒绝策略。
// corePoolSize: 线程池核心线程数
// maximumPoolSize:线程池最大数
// keepAliveTime: 空闲线程存活时间
// unit: 时间单位
// workQueue: 线程池所使用的缓冲队列
// threadFactory:线程池创建线程使用的工厂
// handler: 线程池对拒绝任务的处理策略
ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(3, 5, 1L, TimeUnit.SECONDS,
new ArrayBlockingQueue<>(3), Executors.defaultThreadFactory(), new ThreadPoolExecutor.AbortPolicy());
for (int i = 0; i < 9; i++) {
threadPoolExecutor.execute(()->{
System.out.println(Thread.currentThread().getName() + "===>办理业务");
});
}
threadPoolExecutor.shutdown();