• 锁机制(一)


    转自:http://www.blogjava.net/xylz/archive/2010/07/05/325274.html

    JDK 5中的锁是接口java.util.concurrent.locks.Lock。另外java.util.concurrent.locks.ReadWriteLock提供了一对可供读写并发的锁

    1. void lock()

    获取锁。

    如果锁不可用,出于线程调度目的,将禁用当前线程,并且在获得锁之前,该线程将一直处于休眠状态。

    2.void lockInterruptibly() throws InterruptedException;

    如果当前线程未被中断,则获取锁。

    如果锁可用,则获取锁,并立即返回。

    如果锁不可用,出于线程调度目的,将禁用当前线程,并且在发生以下两种情况之一以前,该线程将一直处于休眠状态:

    • 锁由当前线程获得;或者
    • 其他某个线程中断当前线程,并且支持对锁获取的中断。

    如果当前线程:

    • 在进入此方法时已经设置了该线程的中断状态;或者
    • 在获取锁时被中断,并且支持对锁获取的中断,

    则将抛出 InterruptedException,并清除当前线程的已中断状态。

    3.Condition newCondition()

    返回绑定到此 Lock 实例的新 Condition 实例

    4.boolean tryLock();

    仅在调用时锁为空闲状态才获取该锁。

    如果锁可用,则获取锁,并立即返回值 true。如果锁不可用,则此方法将立即返回值 false

    5.boolean tryLock(long time, TimeUnit unit) throws InterruptedException;

    如果锁在给定的等待时间内空闲,并且当前线程未被中断,则获取锁。

    如果锁可用,则此方法将立即返回值 true。如果锁不可用,出于线程调度目的,将禁用当前线程,并且在发生以下三种情况之一前,该线程将一直处于休眠状态:

    • 锁由当前线程获得;或者
    • 其他某个线程中断当前线程,并且支持对锁获取的中断;或者
    • 已超过指定的等待时间

    如果获得了锁,则返回值 true

    如果当前线程:

    • 在进入此方法时已经设置了该线程的中断状态;或者
    • 在获取锁时被中断,并且支持对锁获取的中断,

    则将抛出 InterruptedException,并会清除当前线程的已中断状态。

    如果超过了指定的等待时间,则将返回值 false。如果 time 小于等于 0,该方法将完全不等待。

    6.void unlock();

    释放锁。对应于lock()、tryLock()、tryLock(xx)、lockInterruptibly()等操作,如果成功的话应该对应着一个unlock(),这样可以避免死锁或者资源浪费。

  • 相关阅读:
    HDU 3579 Hello Kiki 中国剩余定理
    DHU 1788 Chinese remainder theorem again 中国剩余定理
    初学--求解模线性方程组(中国余数定理)。
    山东第四届省赛: Boring Counting 线段树
    山东第四届省赛C题: A^X mod P
    福州大学oj 1752 A^B mod C ===>数论的基本功。位运用。五星*****
    HDU 1576 A/B 暴力也能过。扩展欧几里得
    POJ 1061 青蛙的约会 扩展欧几里德--解不定方程
    HDU 2669 Romantic 扩展欧几里德---->解不定方程
    南阳nyoj 56 阶乘因式分解(一)
  • 原文地址:https://www.cnblogs.com/jerrice/p/7285990.html
Copyright © 2020-2023  润新知