java中锁机制的应用场景的简单理解

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_34531925/article/details/79059529
  1. 如果该实例是非单例对象,一般不会有线程安全问题. 因为每个线程会分别拥有不相同地址值的该对象
  2. 如果是单例对象, 存在线程安全问题.
    1. 多个线程对该对象的属性进行修改,产生线程安全问题
  3. 对某一唯一数据同时进行修改,拿用户购买商品为例.
    1. 线程A: 用户A对商品C进行下订单操作, 过程中需要对商品库存进行修改
    2. 线程B: 同时用户B对商品C进行下订单操作,过程中也需要对商品库存进行修改.
      1. 类似这种对同一数据并发修改的情景,会有线程安全问题. 此时, 需要对用户下订单的相关代码需要加锁.
      2. 加锁是有讲究的,加的大了,比如如果该操作对象是单例, 以该对象为锁;或者该对象为非单例,以该对象的class类为锁,均是非常影响性能的. 因为绝大时候并不会有线程安全问题. 再次拿用户下订单为例, 此处可以以该商品的 ID 作为锁,既使该类线程安全,又极小的影响服务性能.
展开阅读全文

没有更多推荐了,返回首页