zoukankan      html  css  js  c++  java
  • lock与sychronized关键字

    1. lock与sychronized关键字的区别

    (1) Lock是一个接口,而synchronized是Java中的关键字,synchronized是内置的语言实现,Lock是代码层面的实现。
    (2)Lock可以选择性的获取锁,如果一段时间获取不到,可以放弃。synchronized不行,会一根筋一直获取下去。 借助Lock的这个特性,就能够规避死锁,synchronized必须通过谨慎和良好的设计,才能减少死锁的发生。
    (3)synchronized在发生异常和同步块结束的时候,会自动释放锁。而Lock必须手动释放, 所以如果忘记了释放锁,一样会造成死锁(为了保证释放的执行,往往会把unlock() 放在finally中进行)。

    2. trylock方法

    (1)synchronized 是不占用到手不罢休的,会一直试图占用下去。
    (2)与 synchronized 的钻牛角尖不一样,Lock接口还提供了一个trylock方法。trylock会在指定时间范围内试图占用,占成功了,就继续。 如果时间到了,还占用不成功,扭头就走。

    3. 线程交互

    (1)使用synchronized方式进行线程交互,用到的是同步对象的wait,notify和notifyAll方法
    (2)Lock也提供了类似的解决办法,首先通过lock对象得到一个Condition对象,然后分别调用这个Condition对象的:await, signal,signalAll 方法

  • 相关阅读:
    浅谈自动化测试
    Linux cron定时介绍
    Python上下文管理器
    Robot Framework robot命令
    Web自动化测试之playwright:设置浏览器语言
    Python文件及目录处理方法
    2021google开发者大会
    linux环境变量设置小结
    Eclipse快捷键
    java计时 小计
  • 原文地址:https://www.cnblogs.com/changna1314/p/6869301.html
Copyright © 2011-2022 走看看