Java锁对象、条件对象

锁对象

java.util.concurrent.locks.Lock

方法:

  • void lock();
    • 获取这个锁;如果锁同时被另一个线程拥有则发生阻塞。
  • void lockInterruptibly() throws InterruptedException;
    • 获得锁, 但是会不确定地发生阻塞。如果线程被中断, 抛出一个 InterruptedException异常。
  • boolean tryLock();
    • 尝试获得锁而没有发生阻塞;如果成功返回真。这个方法会抢夺可用的锁, 即使该锁有公平加锁策略, 即便其他线程已经等待很久也是如此。
  • boolean tryLock(long time, TimeUnit unit) throws InterruptedException;
    • 尝试获得锁,阻塞时间不会超过给定的值;如果成功返回 true。
  • void unlock();
    • 释放这个锁。
  • Condition newCondition();
    • 返回一个与该锁相关的条件对象。

条件对象

java.util.concurrent.locks.Condition

方法:

  • void await() throws InterruptedException
    • 将该线程放到条件的等待集中。
  • void awaitUninterruptibly()
    • 进人该条件的等待集, 直到线程从等待集移出才解除阻塞。如果线程被中断, 该方法不会抛出 InterruptedException 异常。
  • long awaitNanos(long nanosTimeout) throws InterruptedException
    •  
  • boolean await(long time, TimeUnit unit) throws InterruptedException
    • 进人该条件的等待集, 直到线程从等待集中移出或等待了指定的时间之后才解除阻塞。如果因为等待时间到了而返回就返回 false , 否 则 返 回 true。
  • boolean awaitUntil(Date deadline) throws InterruptedException
    •  
  • void signal()
    • 从该条件的等待集中随机地选择一个线程, 解除其阻塞状态。
  • void signalAll()
    • 解除该条件的等待集中的所有线程的阻塞状态。

java.lang.Object

  • public final void wait() throws InterruptedException

    • 导致线程进人等待状态直到它被通知。该方法只能在一个同步方法中调用。如果当前线程不是对象锁的持有者,该方法拋出一个 IllegalMonitorStateException 异常。

  • public final void wait(long timeout, int nanos) throws InterruptedException

    • nanos 纳秒数,<1 000 000

  • public final native void wait(long timeout) throws InterruptedException

    • 导致线程进入等待状态直到它被通知或者经过指定的时间。这些方法只能在一个同步方法中调用。如果当前线程不是对象锁的持有者该方法拋出一个 IllegalMonitorStateException异常。

    • millis 毫秒数

  • public final native void notify()

    • 随机选择一个在该对象上调用 wait 方法的线程, 解除其阻塞状态。该方法只能在一个同步方法或同步块中调用。如果当前线程不是对象锁的持有者, 该方法抛出一个IllegalMonitorStateException 异常。

  • public final native void notifyAll()

    • 解除那些在该对象上调用 wait 方法的线程的阻塞状态。该方法只能在同步方法或同步块内部调用。如果当前线程不是对象锁的持有者,该方法拋出一个 IllegalMonitorStateException异常。

https://tech.meituan.com/2018/11/15/java-lock.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值