线程池原理几种常见的线程池
线程池原理几种常见的线程池
几种常见的线程池:
FixedThreadPool(固定线程池):它的核心线程数和最大线程数一样。
SingleThreadExecutor(单例线程池):它的核心线程数和最大线程数均为1
CachedThreadPool(缓存线程池):因为创建的线程都是临时线程,所以他们都会被销毁,这里空闲 线程销毁时间是60秒,也就是说当线程在60秒内没有任务执行则销毁
ScheduledThreadPool(调度线程池):线程池是支持定时或者周期性执行任务
SingleThreadScheduledExecutor(单线程调度执行器):
ForkJoinPool:这是一个在 JDK7 引入的新新线程池,它的主要特点是可以充分利用多核CPU , 可以把一个任务拆分为多个子任务,这些子任务放在不同的处理器上并行执行,当这些子任务执行结束后再把这些结果合并起来,这是一种分治思想。
一、使用线程池的好处:
1, 降低系统的消耗:线程池复用了内部的线程对比处理任务的时候创建线程处理完毕销毁线程降低了线程资源消耗
2,提高系统的响应速度:任务不必等待新线程创建,直接复用线程池的线程执行
3,提高系统的稳定性:线程是重要的系统资源,无限制创建系统会奔溃,线程池复用了线程,系统会更稳定
4,提供了线程的可管理功能:暴露了方法,可以对线程进行调配,优化和监控
线程池原理是什么
1、判断线程池里的核心线程是不是都在执行任务。
假如不是或者是核心线程空闲又或者是还有核心线程没有被创建的话,就创建一个新的工作线程来执行任务。
假如,核心线程都在执行任务,就进入下个流程。
2、线程池会判断工作队列是不是已经满了。
假如,工作队列没有满,那么,就将新提交的任务存储在这个工作队列里。
假如,工作队列满了,进入下个流程。
3、判断线程池里的线程是不是都处于工作状态。
要是没有的话,那么就,创建一个新的工作线程来执行任务。
假如,满了的话,那么就交给饱和策略来处理这个任务