我有一个Map
可以null
在应用程序首次启动时清除或简单清除的对象。我需要所有访问此映射的线程阻塞,直到映射初始化,然后我才需要向所有线程发出信号以访问此映射。
Synchronized
此映射包含配置数据,除非单个线程决定刷新以加载新的配置数据,否则它将仅用于读取(因此,出于性能考虑,它不需要,因为我也认为没有必要)。我尝试将Condition
对象用于 aReentrantLock
但IllegalMonitorState
每当我尝试signalAll()
或时它都会引发异常await()
。
这是我需要做的伪代码:
void monitorThread{
while(someCondition){
map = updatedMap();
condition.signalAll();
}
}
String readValueFromMap(String key){
if(map == null){
condition.await();
}
return map.get(key);
}