在做一个程序,启动时从数据库读出静态数据存储到一个静态变量HashMap中,
提供给多个线程进行读操作,然后每隔一段时间(比如30分钟)再次从数据库更新
数据到此HashMap中,这样的逻辑需要怎样的锁来实现呢?是否应该用读写锁?
另外如何才能提高效率,同时保证线程安全?如果存储数据的容器是List又如何
实现?
更新HashMap线程逻辑代码:
[code="java"]
public void updateData() {
// MyHashData就是存储静态数据HashMap<String, String>
// 是不是应该用ConcurrentHashMap?
// loadData是读取静态数据的函数,这样直接返回会不会有问题
// 是不是应该MyHashData直接调用put函数来读取数据?
// 如何加锁?
MyHashData = loadData();
}
[/code]
其他线程逻辑代码:
[code="java"]
public void checkData() {
// 如何加锁?
if (MyHashData.containsKey(key)) {
// 处理过程
...
}
}
[/code]