线程池的好处
- 降低资源消耗
- 提高响应速度
- 提高线程的可管理性
向线程池提交一个任务
如果没有空闲线程(并且核心线程池没有满),那么将会创建一个核心线程,如果核心线程满了,任务会加入阻塞队列,如果阻塞队列满了,会使用拒绝策略。
一旦线程在 ThreadPoolExecutor 中被创建出来,它会从阻塞队列中获取任务并执行。
参数
核心线程数
阻塞队列
线程最大数量
饱和拒绝策略
java中的线程池基于Executor框架:使用线程来异步执行任务
在HotSpot的线程模型中,java线程被一对一映射为本地操作系统线程。当线程终止时,操作系统线程会被回收。
ThreadPoolExecutor
ThreadPoolExecutor threadPoolExecutor=new ThreadPoolExecutor(2,5,1000, TimeUnit.MICROSECONDS,new ArrayBlockingQueue<>(100));
Executors创建特定的ThreadPoolExecutor
ScheduledThreadPoolExecutor
ThreadPoolExecutor threadPoolExecutor1=new ScheduledThreadPoolExecutor(1);
ExecutorService th2=Executors.newScheduledThreadPool(1);