【Java】并发-锁

高并发的解决方案

volatile、synchronized、Lock、AtomicInteger

Volatile

volatile是一种稍弱的同步机制,在访问volatile变量时不会执行加锁操作,也就不会执行线程阻塞。他实现的是变量的可见性与一致性,但是他的原子性是保证不了。读取Volatile可以使用Unsafe.getObjectVolatile()获取,保证一致性。

synchronized(悲观锁)

锁的对象
public synchronized void method()
synchronized(this)
//零长度的byte数组对象创建起来将比任何对象都经济
byte[] lock = new byte[0]
synchronized(lock)
public synchronized static void method()
synchronized(Foo.class)
Foo.class和 P1.getClass()用于作同步锁还不相同

Lock(独占锁)

分析一下synchronized(隐式锁)的缺点:
1、占有synchronized锁的线程只有执行完该代码块,才能释放对锁的占有;
2、其他线程尝试获取synchronized锁,会一直尝试,无法知道结果,无法中断;
3、读写操作的时候,读与读之间不会互斥,synchronized锁无法实现;
Lock的Api:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值