• JAVA_Lock


      今天是毕业入职的第一个周末,一直对多线程并发方面的知识比较感兴趣,因为目前我手里的项目并没有涉及到并发方面的知识,所以怕以后遗忘,也便于以后复习和使用,所以总结了一下Lock里面的一些类的方法。具体的代码实现例子我在这里就不做说明解释了,这些方法都比较容易理解和使用,如果实在是忘记的话可以在随时查阅资料即可。

    ReentrantLock

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

    int getQueueLength:返回正等待获取此锁定的线程估计数

    int getWiteQueueLength(Condition condition):返回等待与此锁定相关的给定条件Condition的线程估计数。比如有5个线程,每个线程都执行了同一个condition对象的await()方法,调用它的时候返回的int值是5

    boolean hasQueuedThread(Thread thread):查询指定的线程是否正在等待获取此锁定

    boolean hasQueuedThread():查询是否有线程正在等待获取此锁定

    boolean hasWaiters(Condition condition) :查询是否有线程正在等待此锁定有关的condition条件

    boolean isFair():判断是不是公平锁,默认的情况下ReentrantLock类使用的是非公平锁

    boolean isHeldByCurrentThread():作用是查询当前线程是否保持此锁定

    boolean isLocked():作用是查询此锁定是否由任意的线程保持

    void lockInterruptibly():作用是如果当前线程未被中断,则获取锁定,如果已经被中断则出现异常

    boolean tryLock():作用是仅在调用时锁定未被另一个线程保持的情况下,才获取该锁定。

    boolean tryLock(Long timeout,TimeUnit unit):作用是,如果锁定在给定等待时间内没有被另一个线程保持,且当前线程未被中断,则获取该锁定

    awaiteUntil()

    awaitUnintettuptibly()

    读写锁ReentrantReadWriteLock

    读写锁表示有两个锁,一个是读操作相关的锁,共享锁。一个是写操作相关的锁,排他锁。多个读锁之间不互斥,读锁与写锁互斥,写锁与写锁互斥。

    读写锁的代码例子我就不在这里列出了,想知道的话可以去随意的查询一下资料有很多。

    Lock这块的内容我就暂时先写这么多,后续会继续补充分析他们的源码实现,会有更多的内容涉及到

     

  • 相关阅读:
    C# 代理与事件上(delegate)
    串口编程(SerialPort类)
    java提取QQ邮箱中的邮箱地址
    javascript 调用onclick动作的几种方式。
    python的一些扩展模块,关于Reserving的....
    [ZZ]硬件虚拟化漫谈
    Intel VTx 技术手册 目录
    VTx技术手册杂记
    关于磁盘分析的一些资料
    ReactOS下的Sysutils目录.
  • 原文地址:https://www.cnblogs.com/prayers/p/7467044.html
Copyright © 2020-2023  润新知