zoukankan      html  css  js  c++  java
  • 一.lock的使用

    使用ReentrantLock类

    ReentrantLock类在扩展功能上更加强大,比如嗅探锁定,多路分支通知。而且在使用上也比synchronized更加灵活

    调用ReentrantLock对象的lock()方法获取锁,调用unlock()方法释放 锁。

    使用Condition实现等待/通知机制:错误用法与解决

      注意调用condition.await()方法之前调用lock.lock()代码获得同步监视器

    这个synchronized一样,调用wait()和notify()方法必须放入在同步锁内一个道理

    正确使用Condition实现等待/通知

    使用多个conditon实现通知部分线程:错误用法

    使用多个condition实现通知部分线程:正确用法

    使用ReentrantLock对象可以唤醒指定种类的线程,这是控制部分线程行为方式的便捷方式。

    公平锁与非公平锁

    非公平锁

    方法getHoldCount()getQueueLength()和getWaitQueueLength()的测试

    方法 int getHoldCount()的作用是查询当前线程保持锁定的个数,也就是调用lock()方法的次数

    方法int getQueueLength()的作用是返回正等待获取此锁的线程估计数

    方法int getWaitQueueLength(Condition condition)的作用是返回等待与此锁相关的给定条件Condition线程估计数

    方法awaitUntil()的使用

    等待一定的时间后自动唤醒

  • 相关阅读:
    FeignClient服务之间调用,数据传输超过10M
    docker安装streamset
    Nginx 相关命令
    Maven构建命令相关
    ubuntu18.04的安装与学习记录
    Java8获取世界标准时
    我所遇到的正则表达式使用场景
    linux查看磁盘命令du df
    db2获取第一条数据
    Linux命令 dos2unix 的实际应用场景
  • 原文地址:https://www.cnblogs.com/duan2/p/7747287.html
Copyright © 2011-2022 走看看