日期:2014-05-17  浏览次数:20810 次

关于map的赋值问题。
小人初学。 
public static ConcurrentHashMap<Integer, String> orderStatus = new ConcurrentHashMap<Integer, String>();

public static void initData() {
try {
logger.info("begin to load the data ");
orderStatus = InitData.loadOrderStatus();
// InitData.loadOrderStatus(); 是从数据库读取数据,然后返回一个Map。 
//orderStatus 是一个会经常读取的数据,设置成static的。
} catch (Exception e) {
logger.error("load the data error ", e);
}
}
public static void updateTask() {

Timer loadtask = new Timer();
loadtask.schedule(new TimerTask() {
@Override
public void run() {
try {
initData();
} catch (Exception e) {
logger.error(" update the tts database error", e);
}
}
}, new Date(),24L * 60* 60 * 1000);
}

想问下,用不用 ConcurrentHashMap?? 
 还是说用map 加 synchronized (orderStatus) {
  orderStatus = InitData.loadOrderStatus();
  }


最终问题:::不确定,在赋值的时候怎么做才是线程安全的。。。

------解决方案--------------------
ConcurrentHashMap
这个是已经实现了线程安全的Map了。。。