2016324
2016-03-24 15:30
197 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/WB_123456/article/details/50972152
1. 线程安全问题也就是多个线程同时访问一个资源的时候,会导致程序运行的结果并不是想看到的结果。也就是临界资源的问题。
2. 如何解决线程安全问题?
就是在访问临界资源的代码前面加一个锁,当访问完临界资源后释放锁,让其他线程继续访问。
3. 在java中,提供了两种方式来实现同步互斥访问:synchronized和lock
4. synchronized同步方法或者同步块
在java中,每个对象都拥有一个锁标记(monitor),也称为监视器,多线程同时访问某个对象时,线程只有获取了该对象的锁才能访问。
5.另外,每个类也会有一个锁,它可以用来控制对static数据成员的并发访问。
6.如果一个线程执行一个对象的非static synchronized方法,另外一个线程需要执行这个对象所属类的static synchronized方法,此时不会发生互斥现象,因为访问static synchronized方法占用的是类锁,而访问非static synchronized方法占用的是对象锁,所以不存在互斥现象。
2. 如何解决线程安全问题?
就是在访问临界资源的代码前面加一个锁,当访问完临界资源后释放锁,让其他线程继续访问。
3. 在java中,提供了两种方式来实现同步互斥访问:synchronized和lock
4. synchronized同步方法或者同步块
在java中,每个对象都拥有一个锁标记(monitor),也称为监视器,多线程同时访问某个对象时,线程只有获取了该对象的锁才能访问。
5.另外,每个类也会有一个锁,它可以用来控制对static数据成员的并发访问。
6.如果一个线程执行一个对象的非static synchronized方法,另外一个线程需要执行这个对象所属类的static synchronized方法,此时不会发生互斥现象,因为访问static synchronized方法占用的是类锁,而访问非static synchronized方法占用的是对象锁,所以不存在互斥现象。
相关文章推荐
- 为什么要使用CMake+VS编译OpenCV的源码
- 减少App Store审核被拒的小技巧
- linux下设置环境变量的三种方法
- js控制多个输入框的连续输入与删除,不需要每次的点击输入框
- Android开发之Android5.1.1(CM12.1)源码中短信发送流程解析
- iOS 自动布局图片类似微博
- Disabling default console handler in Java Logger by codes
- 数据库sqlite3的使用-ios中引用方法
- Ubuntu14.0.4系统如何获取root权限
- javascript数组增删改查
- 组合模式(Composite)
- Android下数据库的操作应用(一)
- 批处理隐藏文件
- Myeclipse中搭建Android开发环境
- kafka源码解析之五Broker处理的request的来源
- python2.7:中默认的编码格式是 ASCII 格式,在没修改编码格式时无法正确打印汉字,所以在读取中文时会报错。
- postgresql Streaming Replication监控与注意事项
- Android布局优化
- oracle sql 优化大全
- Oracle SQL性能优化