JAVA-LOCK锁篇

synchronized和Lock的区别?

1、Synchronized是内置的java关键字,Lock是一个Java类

2、Synchronized是无法判断锁的状态,Lock可以判断是否获取到了锁

3、Synchronized是会自动释放锁,业务执行完或抛出异常都会释放,Lock需要手动释放锁,不放锁会死锁

4、Synchronized如果某一个西安城阻塞,另外一个线程会傻傻等待,Lock会尝试去,不会一直等待下载

5、Synchronized是可重入锁,不可以中断的,非公平,Lock是可重入,可以判断锁,可以自由设置公平锁或非公平锁 

6、synchronized适合少量代码同步的问题,Lock锁适合大量的同步代码

【一】ReentrantLock:重入互斥锁,可以重新进入的锁,当前线程通过调用lock.lock()获得锁,如果再进入这个方法,不会阻塞,增加重入的次数。

Synchronized和ReentantLock都支持重入

重入锁主要就是为了避免死循环,死锁的发生

【二】ReentrantReadWriteLock读写锁

三、AQS同步工具

1、独占,同一个时刻,只有一个线程能获得锁

2、共享

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值