synchronized和Lock或volatile的区别

    Lock和synchronized的区别
    1、Lock是一个接口,而synchronized是java中的关键字,并且是JVM随机获得的内置锁。
    2、synchronized发生异常时会自动释放线程占有的锁,不会导致死锁现象发生(自动),Lock会发生死锁现象(手动)。
    3、Lock可以通过响应中断方法让等待锁中断,而synchronized不行,会让等待的线程一直等待下去。
    4、synchronized是单一控制线程,效率低下,而Lock是支持多对象监控器控制线程,效率高效
     
    synchronized和volatile的区别
    volatile仅能使用在变量级别,支持共享变量——具有可见性,不具有原子性,禁止进行指令重排序,直接从主存中读取,标记时的变量不会被编译器优化
    synchronized可以使用在变量、方法、类级别,但锁定的是当前变量,只有当前线程可以访问变量,保证可见性和原子性,标记时的变量可以被编译器优化

   参照来源于《黑马程序员面试宝典(java)》

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值