我们使用 线程 的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。
1、什么是 线程池 : Java通过java.util.concurrent. Executor 接口的实现用于创建线程池
常用的四个线程
①newSingleThreadExecutor
单个线程的线程池,即线程池中每次只有一个线程工作,单线程串行执行任务
②newFixedThreadExecutor
创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。
③newCacheThreadExecutor(推荐使用)
可 缓存 线程池, 当线程池大小超过了处理任务所需的线程,那么就会回收部分空闲(一般是60秒无执行)的线程 ,当有任务来时,又智能的添加新线程来执行。
④newScheduleThreadExecutor
大小无限制的线程池,支持定时和周期性的执行线程
接下来给大家举个栗子,是我最近用的一个:
1.定义一个实体类
实现callable接口
创建主线程
结果
通俗点讲: 线程池就是用来管理线程的,普通线程要创建摧毁很耗时和内存资源,就像一次性筷子生产到扔掉,我们线程池就像家用筷子,可以用很多次,线程池就是这么一个作用。