如何深入理解Java中的Condition接口的最佳途径?
- 内容介绍
- 文章标签
- 相关推荐
本文共计876个文字,预计阅读时间需要4分钟。
Condition 是在编程中实现条件变量的机制。Java 中的条件变量仅有一个,而 LockCondition 实现的管程支持多个条件变量。支持多个条件变量,可以使代码可读性更好,实现也更为灵活。
Condition就是实现了管程里面的条件变量。
Java 语言内置的管程里只有一个条件变量,而Lock&Condition实现的管程支持多个条件变量。 支持多个条件变量,能让代码可读性更好,实现也更容易。
例如,你看我这里实现一个阻塞队列,就需要两个条件变量:
- 队列不空 空队列自然没有元素能出队队列不满
- 队列已满,当然也不可有元素再入队
Lock和Condition实现的管程,线程等待和通知需要调用await()、signal()、signalAll(),它们的语义和wait()、notify()、notifyAll()相同。
- Lock&Condition实现的管程里只能使用await()、signal()、signalAll()
- synchronized实现的管程才能使用wait()、notify()、notifyAll()
如果在Lock&Condition实现的管程里调用wait()、notify()、notifyAll(),你距离离职就更近一步了。
本文共计876个文字,预计阅读时间需要4分钟。
Condition 是在编程中实现条件变量的机制。Java 中的条件变量仅有一个,而 LockCondition 实现的管程支持多个条件变量。支持多个条件变量,可以使代码可读性更好,实现也更为灵活。
Condition就是实现了管程里面的条件变量。
Java 语言内置的管程里只有一个条件变量,而Lock&Condition实现的管程支持多个条件变量。 支持多个条件变量,能让代码可读性更好,实现也更容易。
例如,你看我这里实现一个阻塞队列,就需要两个条件变量:
- 队列不空 空队列自然没有元素能出队队列不满
- 队列已满,当然也不可有元素再入队
Lock和Condition实现的管程,线程等待和通知需要调用await()、signal()、signalAll(),它们的语义和wait()、notify()、notifyAll()相同。
- Lock&Condition实现的管程里只能使用await()、signal()、signalAll()
- synchronized实现的管程才能使用wait()、notify()、notifyAll()
如果在Lock&Condition实现的管程里调用wait()、notify()、notifyAll(),你距离离职就更近一步了。

