java synchorized lock CAS 区别

1.相同点:synchorized lock CAS 都是为了实现线程同步以及线程安全。

2.区别:

synchorized: 让代码块或则方法中的代码只能被一个线程执行.简单的理解就好像一道门,每次只允许一个人进去  当做完事情后   此人出去后 才让其他的人进来,其他人中也包括原来的那个人.  本质是:悲观锁。

lock:提供了比synchronized更多的方法,但是保留了synchronized一些方法和行为,对锁中断,锁的定时等等。

CAS:通过硬件指令的方式实现乐观锁,以及锁的非阻塞方式来实现线程之间的同步。A:预期的内存值     B:当前的内存值   V:旧的内存值。 当预期内存值A = V的时候,实现V = B。

3.缺点:

synchorized:实现的方式其中一个线程挂起的时候或则出现异常的情况 ,对其他的线程有影响

lock:必须成对出现。lock(),unlock()方法。

CAS:ABA问题。如果一个值原来是A,变成了B,后来又变成了A。使用CAS是检查不出问题的。但实际是发生了变化的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值