Java并发基础(三)-线程安全
来源:互联网 发布:日本 常任理事国知乎 编辑:程序博客网 时间:2024/05/16 14:29
1. 什么是线程安全
如果一个对象可以安全的被多个线程同时使用,那么它就是线程安全的
当多个线程访问一个对象的时候,如果不考虑这些线程在运行时环境下的调度和交替执行,也不需要额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象就是线程安全的。
2. Java中的线程安全
根据线程安全的安全程度由强至弱来排序,可以分为5类:
- 不可变
- 绝对线程安全
- 相对线程安全
- 线程兼容
- 线程对立
3. 线程安全的实现方法
- 互斥同步,
- synchronized
- ReentrantLock 重入锁
- 非阻塞同步,基于冲突检测的乐观并发策略,先进行操作,如果没有其他线程竞争共享数据,就操作成功了。否则,产生冲突,再采用补偿措施(最常见的就是不断重试),这种不需要将线程挂起,为非阻塞。这些涉及到处理器指令
- 测试并设置(Test-and-Set)
- 获取并增加(Fetch-and-Increment)
- 交换(swap)
- 比较并交换(Compare-and-Swap CAS)
- 枷锁链接/条件存储(Load-LInked/Store-Conditional LL/SC)
- 无同步方案
- 可重入代码 这种代码叫纯代码,可以在代码执行的任何时刻中断他,转而执行另一段代码,但是,回来之后,并不会出现任何错误。
- 线程本地存储 ThreadLocal
线程安全这块深究下去比较难。建议去看下深入理解JVM一书。
参考资料
- 深入理解JVM
2 3
- Java并发基础(三)-线程安全
- java并发编程基础之线程安全
- java并发:线程安全
- java-并发-线程安全
- java-并发-线程安全
- [高并发Java 三] Java内存模型和线程安全
- 【高并发Java三】Java内存模型和线程安全
- 高并发Java 三 Java内存模型和线程安全
- 高并发Java 三 Java内存模型和线程安全
- Java并发编程(二)--java线程安全的一些基础
- JAVA并发编程(三)设计线程安全的类
- Java并发系列(一)线程安全基础
- Java多线程基础(并发、线程安全、同步、互斥)
- Java 并发之线程安全
- Java 并发 线程安全 ThreadLocal
- java并发基础--线程
- Java线程并发基础
- java线程并发基础
- 剑指Offer面试题24(Java版):二叉搜索树后序遍历序列
- android事件监听回调机制
- Java POI组件——读、筛选、写Excel
- jzoj 4814. 【NOIP2016提高A组五校联考2】tree 树形dp
- angular.js学习(3)--injector注射器
- Java并发基础(三)-线程安全
- 【jzoj 4814】【NOIP2016提高A组五校联考2】tree
- 操作系统精髓与设计原理--进程控制
- PADS差分信号如何画
- CSDN markdown 编辑器模板
- 2016弱校联盟十一专场10.2 Longest Increasing Subsequence
- MDCC2016 总结
- SQL 之 基于列的逻辑
- highchart字符串转化成json数组