Java多线程Day21-JUC锁之Condition条件
Posted 攻城狮Chova
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java多线程Day21-JUC锁之Condition条件相关的知识,希望对你有一定的参考价值。
基本概念
- Condition的作用: 对锁进行更精确的控制
- 对于同一个锁,可以创建多个Condition, 在不同的情况下使用不同的Condition
- Condition和Object类之间的联系:
Condition | Object | |
---|---|---|
等待 | await() | wait() |
唤醒 | signal() | notify() |
唤醒全部 | signalAll() | notifyAll() |
锁 | 互斥锁或者共享锁 | synchronized关键字的同步锁 |
Condition方法
await
/**
* 使当前线程处于等待状态
* 当前线程在接收到唤醒信号或者被中断之前一直处于等待状态
*
* @throw InterruptedException 被中断时会抛出异常
*/
void await() throws InterruptedException;
/**
* 使当前线程处于等待状态
* 当前线程在接收到唤醒信号,被中断之前或者到达指定等待的时间之前一直处于等待状态
*
* @param time 指定的等待时间
* @param unit 指定的等待时间的单位
* @return boolean 如果等待时间没有结束则返回false,否则返回true
* @throw InterruptedException 被中断时会抛出异常
*/
boolean await(long time, TimeUnit unit) throws InterruptedException;
awaitNanos
/**
* 使当前线程处于等待状态
* 当前线程在接收到唤醒信号,被中断之前或者到达指定等待的时间之前一直处于等待状态
*
* @param nanosTimeout 指定的等待的最大时间
* @return long 剩余的等待时间
* @throw InterruptedException 被中断时会抛出异常
*/
long awaitNanos(long nanosTimeout) throws InterruptedException;
awaitUninterruptibly
/**
* 使当前线程处于等待状态
* 当前线程在接收到唤醒信号之前一直处于等待状态
*/
void awaitUninterruptibly();
awaitUtil
/**
* 使当前线程处于等待状态
* 当前线程在接收到唤醒信号,被中断之前或者到达指定的截止日期之前一直处于等待状态
*
* @param deadline 截止日期
* @return boolean 如果超过指定的日期则返回true,如果未到指定的截止日期则返回false
* @throw InterruptedException 如果被中断则抛出异常
*/
boolean awaitUntil(Date deadline) throws InterruptedException;
signal
/**
* 唤醒一个等待线程
*/
void signal();
signalAll
/**
* 唤醒所有等待线程
*/
void signalAll();
以上是关于Java多线程Day21-JUC锁之Condition条件的主要内容,如果未能解决你的问题,请参考以下文章