多线程(一)——线程池概念

知识点复习:

1、数据库连接池——jdbc连接池优化
2、经常创建、启动一个线程是非常耗时的过程
3、线程的生命状态:新建、准备、启动、休眠

新知识:

一、合理利用线程池的3个好处

1)降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的损耗
2 )提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即
3)提高线程的可管理性。线程是稀缺资源,如果无限制地创建,部件会消耗资源,韩慧降低系统的稳定性,使用线程可以进行统一分配,执行调优和监控,但是要做到合理利用线程池,必须对其实现原理了如指掌。


二、java中线程池的核心类是ThreadPoolExecutor
三、线程池的四种创建方式
java通过Exectutors提供四种线程池分别是
1)newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程
2)newFixedThreadPool创建一个定长线程池,可控制线程池,可控制线程最大并发数,超出的县城在队列中等待
3)newScheduledThreadPool创建一个定长线程池,支持定时及周期性任务执行
4)newSingleThreadExecutor创建一个单线程话的线程池,它只会用唯一的工作线程来执行任务保证所有任务都是按照指定顺序(FIFO,LIFO,优先级)执行

总结:

线程池的管理方法
1、如果核心池的线程数小于CorePoolSize,则创建新线程
2、如果核心池的线程大于等于CorePoolSize,则将线程加入等待队列(BlockingQueue)。
3、如果不能加入等待队列,则在线程池允许最大值范围内创建线程并执行任务
4、如果线程数大于等于MaxPoolSize,那么执行拒绝策略

 

画了个草图

多线程(一)——线程池概念_第1张图片

平时开发中可能会用到newFixedThreadPool比较多

你可能感兴趣的:(javase,线程)