我得到這個方法併發修改例外
private AtomicReference<HashMap<String, Logger>> transactionLoggerMap = new AtomicReference<HashMap<String,Logger>>();
public void rolloutFile() {
// Get all the loggers and fire a temp log line.
Set<String> transactionLoggerSet = (Set<String>) transactionLoggerMap.get().keySet();
Iterator<String> transactionLoggerSetIter = transactionLoggerSet.iterator();
while(transactionLoggerSetIter.hasNext()){
String key = (String) transactionLoggerSetIter.next();
Logger txnLogger = transactionLoggerMap.get().get(key);
localLogger.trace("About to do timer task rollover:");
txnLogger.info(DataTransformerConstants.IGNORE_MESSAGE);
}
}
請建議,如果我使用一個原子參考以下java.util.ConcurrentModificationException
,我如何得到一個科莫?
這是完全正確的,但在這個特定問題的上下文中可能是錯誤的,因爲'get'調用可能會改變地圖的結構。更多在這裏:http://goo.gl/f3faP – rtheunissen
OP正在討論一個'HashMap',它不是一個訪問有序映射@paranoid,而是一個好點。 – Gray