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源码。

posted @   一颗米  阅读(53)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示