Java线程安全的实现方法
来源:互联网 发布:java md5 32加密算法 编辑:程序博客网 时间:2024/06/05 00:48
当我们说线程安全的时候,我们到底在说什么?
Google上给出的概念是:如果一个对象能被多个线程安全的同时使用,那该对象就是安全的。《Java Concurrency Practice》一书中给出的定义是:当多个线程访问同一个对象时,如果不考虑这些线程在运行时环境如何调度和交替执行,也不需要额外的同步,或者在调用方进行其他任何的协调操作,调用该对象都能得到正确的结果,那该对象就是线程安全的。
Java中线程安全的实现方式:
1. 悲观锁:synchronized关键字,lock 都属于悲观锁。
悲观锁是指,一个线程在访问某对象时,必须对对象加锁禁止其他对象的访问或者修改,否则假定一定会出现错误。很显然,该假设太强,所以会对系统的效率造成一定的损失,尤其是在多读的环境中。
2.乐观锁:
乐观锁是指,线程对更新保持一个乐观的态度,即假设修改某对象不会出现同步错误而不加锁,而出现同步错误再返回错误。错误检测的实现主要通过版本号的比较来实现。Hibernate框架中,可以选择事务加锁类型为乐观锁还是悲观锁。
3.volatile关键字
volatile关键字主要保证了有序性和可见性,但是对操作的原子性并不能保证,所以在使用volatile关键字替代锁机制的时候,需要两个条件:即对volatile变量的修改既不取决于变量的当前状态,也不取决于程序的当前状态。
4.concurrent包内的其他线程安全的类:如原子类,concurentHashMap等等
0 0
- java中线程安全的实现方法
- Java线程安全的实现方法
- 线程安全的实现方法
- java并发(二)线程安全的实现方法
- Java实现线程安全的单例模式方法
- Java--java关闭线程的安全方法
- 实现线程安全的一些方法
- JAVA实现线程安全
- 实现Java线程安全
- Java创建线程安全的方法
- Java创建线程安全的方法
- Java 静态方法是线程安全的
- Java中安全终止线程的方法
- Java创建线程安全的方法
- Java关闭线程的安全方法
- Java关闭线程的安全方法
- java 线程安全的3种方法
- Java集合中那些类是线程安全的 以及 Map线程安全几种实现方法
- Android中多图片选择器PhotoPicker库的使用(仿微信,秒杀MultiImageSelector)自己修改的多选
- 注意点小结(Java)
- RasDeleteSubEntry
- 数据---File
- apicloud中多个按钮的切换
- Java线程安全的实现方法
- java基础(四)
- Android拍照或从系统相册获取图片
- MyEclipse 下'Publishing to Tomcat'has encountered a problem解决办法
- 实现音乐播放器歌词显示效果
- hihocoder 1362 修补木桶
- 程序设计竞赛训练手册
- 利用SpringMvc和MyBatis实现员工列表显示页面
- 准备在CSDN安家啦。