weixin_42361810 2010-04-01 12:06
浏览 241
已采纳

多线程更新静态数据的同步问题

在做一个程序,启动时从数据库读出静态数据存储到一个静态变量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]
  • 写回答

5条回答 默认 最新

  • iteye_10059 2010-04-02 22:25
    关注

    [quote]我也想过这样做,但是这样应该存在线程安全的问题吧,是不是应该加个锁?[/quote]

    你的Map对于很多线程都是只读的,你只要保证重新更新Map的是由一个线程来处理
    两个map的切换是原子操作,应该不会有同步问题。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 关于#python#的问题:自动化测试