Java多线程安全性问题总结

Java多线程存在安全性问题的三个必备条件:

  1. 处于多线程环境下
  2. 多个线程共享一个资源
  3. 对资源进行非原子性操作

 

解决线程安全性问题的方法:

  1. 使用synchronized关键字(串行执行,同一时刻只有一个线程进入synchronized方法体或同步块),jdk1.6后对synchronized进行优化,引入了——偏向锁、轻量级锁、重量级锁
  2. volatile能保证变量在线程之间的可见性,防止重排序
  3. jdk所提供的原子类 java.util.concurrent.atomic.*
  4. 使用Lock(常用AQS、ReentrantLock、ReadWriteLock等)—— 包括共享锁和排他锁

 

常见的锁类型

  1. 偏向锁
  2. 轻量级锁
  3. 重量级锁
  4. 重入锁
  5. 自旋锁
  6. 共享锁
  7. 独占锁
  8. 排他锁
  9. 读写锁
  10. 公平锁
  11. 非公平锁
  12. 死锁
  13. 活锁
  14. .......等等

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值