原子性

原子性

原子性是指一个操作不可中断,要么完全成功,要么失败

  1. Atomic包,竞争激烈,性能好,但只能维持一个值
  2. synchrinized,不可中断,适合竞争不激烈的环境
  3. Lock,可中断,竞争激烈

Atomic

内部包含一个用volatile修饰的变量

private volatile int value;

实际操作的是unsafe类

private static final Unsafe unsafe = Unsafe.getUnsafe();

public final int getAndIncrement() {
    return unsafe.getAndAddInt(this, valueOffset, 1);
}

原理为native的CAS(乐观锁)+自旋锁

synchrinized

synchrinized是根据monitor监视器实现的,这个监视器由native实现,大概原理为

线程A-》执行对象方法b
	获取monitor失败-》等待
	获取monitor成功
		-》monitor的count+1
			->线程A执行完成或wait时,释放monitor,count-1
PS:monitor同一时间只允许一个线程访问这个对象

Lock

Lock底层的实现原理是AQS

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值