关于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了。。。