Java CAS && 线程池简述
Java CAS
synchronized为悲观锁,CAS乐观锁机制
包含三个操作数---内存位置V、预期原值A、和新值B,V和A相等的时候,才会更换成B。
缺点
1、循环时间长,则开销大
2、只能保证一个共享变量原子操作
3、ABA问题,改回去改回来,解决:juc提供了AtomicStampedReference,控制变量值的版本保证CAS的正确性。
Java线程池
降低资源消耗
Java juc提供了五种线程池实现
Fork/Join框架
Work-Stealing算法:某个线程从其他队列中窃取任务执行。
juc的三个executor接口
Executor:运行新任务简单接口,没法处理任务的返回值
ExecutorService:提供了线程池的管理方法,能够处理任务的返回值通过Future
ScheduledExecutorService:支持定期执行任务和Future
线程池生命周期
线程池状态&&线程池有效线程数量,int32位的前3位和后29位分别记录。
大小的选择
CPU密集型:线程数设置为核数+1
I/O密集型:线程数=核数*(1 + 平均等待/平均工作),处理较多的任务
线程池这东西还是多读JDK源码。

浙公网安备 33010602011771号