java多线程体系
首先,我们看一张多线程体系结构图(图是粘贴网上的,非自己总结).
文章图片
1、线程安全方法讨论
1.1互斥同步(悲观锁)
Java在JDK1.5之前都是靠synchronized关键字保证同步的。可以确保无论哪个线程持有守护变量的锁,都采用独占的方式来访问这些变量。如果出现多个线程同时访问锁,当一个线程占有锁,其他线程将被挂起,无法执行下去。在挂起和恢复执行过程中存在着很大的开销。
独占锁是一种悲观锁,synchronized就是一种独占锁,它假设最坏的情况,并且只有在确保其它线程不会造成干扰的情况下执行,会导致其它所有需要锁的线程挂起,等待持有锁的线程释放锁
1.2非阻塞同步
常见的非阻塞同步有:
a.volatile 变量:轻量级的线程同步,不会引起线程调度,提供可见性,但是不提供原子性
【java多线程体系】b.CAS 原子指令:轻量级线程同步,不会引起线程调度,提供可见性和原子性
推荐阅读
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 放屁有这三个特征的,请注意啦!这说明你的身体毒素太多
- 爱就是希望你好好活着
- 昨夜小楼听风
- 知识
- 死结。
- 我从来不做坏事
- 烦恼和幸福
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- 事件代理