首页 > 解决方案 > 如果任何其他线程未调用 await(),线程的某些子类是否可以调用 Condition 的函数 signal()?

问题描述

例如,两个线程(Informer 和 Watcher)使用相同的 List。Informer 在 List 中添加数据,如果集合为空或 Informer 访问 List,则 Watcher 无法读取集合。如果 Informer 调用函数 Condition.signal() 但未创建或未启动 Watcher(Watcher 未调用 Condition.await() )会发生什么?

标签: javamultithreadingconditional-statementsreentrantlock

解决方案


signal是的,即使没有等待线程也可以调用。等待的线程会错过这个信号,当它调用时会被阻塞await()


推荐阅读