- 如果该实例是非单例对象,一般不会有线程安全问题. 因为每个线程会分别拥有不相同地址值的该对象
- 如果是单例对象, 存在线程安全问题.
- 多个线程对该对象的属性进行修改,产生线程安全问题
- 对某一唯一数据同时进行修改,拿用户购买商品为例.
- 线程A: 用户A对商品C进行下订单操作, 过程中需要对商品库存进行修改
- 线程B: 同时用户B对商品C进行下订单操作,过程中也需要对商品库存进行修改.
- 类似这种对同一数据并发修改的情景,会有线程安全问题. 此时, 需要对用户下订单的相关代码需要加锁.
- 加锁是有讲究的,加的大了,比如如果该操作对象是单例, 以该对象为锁;或者该对象为非单例,以该对象的class类为锁,均是非常影响性能的. 因为绝大时候并不会有线程安全问题. 再次拿用户下订单为例, 此处可以以该商品的 ID 作为锁,既使该类线程安全,又极小的影响服务性能.
java中锁机制的应用场景的简单理解
原文作者:java锁
原文地址: https://blog.csdn.net/qq_34531925/article/details/79059529
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
原文地址: https://blog.csdn.net/qq_34531925/article/details/79059529
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。