线程池

来源:互联网 发布:韩寒与郭敬明知乎 编辑:程序博客网 时间:2024/06/06 00:05

线程池就是事先将多个线程对象放到一个容器中,当时用的时候就不用new线程而是直接去线程池中拿对象就行,节省了了开辟子线程的时间,提高代码执行效率,

 

优点:

①    节省了创建线程的时间,提高相应速度

②    降低了资源消耗

③    提高了线程的可管理性,使用线程池可以统一的分配和管理

启动策略

线程池刚创建的时候,里面没有一个线程,任务对列是作为参数传递进来的

当我们使用execute添加任务时会首先判断正在运行的线程数是否大于核心线程数,小于则直接创建线程执行任务.等于则假如任务队列等待执行,

若正在执行线程数等于核心线程数,任务对列也满了,则开启新的线程

若正在运行的线程数大于或等于最大线程数,任务对列已满,则抛出异常

四种线程池

①    newCachedThreadPool创建一个可缓存线程池,若线程池长度超过处理需要则回收空线程

②    newFixedThreadPoo 创建一个定长线程池,控制线程最大并发数,超出的线程会再队列中等待

③    newScheduledThreadPool 创建一个定长线程池,支持定时级周期性执行任务

④    newSingleThreadExecutor创建一个单线程化的线程池,他会用唯一的线程执行工作任务,保证所有任务按照指定的顺序来执行(优先级)

原创粉丝点击