java - Java 中的条件如何知道要触发哪个线程?

标签 java multithreading concurrency operating-system

我正在阅读 Condition Documentation我对Java有一个误解。阅读他们的 puttake 示例,正如您所见,他们在函数 put 中包含以下代码行: notEmpty.signal( ) 其中 notEmpty 是来自 lock 的条件。

我想知道如果有多个线程正在等待notEmpty信号怎么办。在这种情况下会发生什么以及触发哪个线程?

最佳答案

它对处理它的操作系统进行系统调用。 JVM 不知道哪个线程(如果有的话)将会唤醒。

线程是由操作系统而不是 JVM 管理的,因此它能做的最好的事情就是进行正确的系统调用,然后让操作系统完成剩下的工作。

关于java - Java 中的条件如何知道要触发哪个线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52197272/

相关文章:

apache - 限制Apache2中的并发连接数

go - 什么时候应该在 channel 上使用互斥体?

java - 找不到符号[编译器错误]

java - 关于同步的意义

java - 并发链表读取器/写入器无法正常工作

java - 线程问题 - 接收方在发送方之前打印

c++ - 我怎样才能用阻塞写入cout?

java - Cron 表达式 0 0/30 * 1/1 * ? * 半小时不工作

java - JFormattedTextField 中的严格 24 小时制

java - Hibernate自定义 validator ,如何设置propertyPath?