我已經在Glassfish 3.1.2.2ConcurrentModificationException的雖然@Lock(LockType.READ)註釋
,並通過閱讀()我得到了下面的代碼ConcurrentModificationException的Java EE應用程序:
private Set<MonitoredService> connectedServices = new HashSet<MonitoredService>();
@Override @Lock(LockType.WRITE)
public void addConnectedService(MonitoredService service) {
if (!connectedServices.contains(service)) {
connectedServices.add(service);
}
}
@Override @Lock(LockType.READ)
public Set<MonitoredService> getConnectedServices() {
return Collections.unmodifiableSet(new HashSet<MonitoredService>(connectedServices));
}
我曾想過Lock註釋關心集合上的同步訪問?
你能顯示ConcurrentModificationException的堆棧跟蹤嗎? Lock的包是什麼? – gogognome 2013-02-25 13:07:12
謝謝,我會將HashMap更改爲Collections.synchronizedSet(..)。沒有Glassfish鎖定。 – DSmelanskij 2013-02-25 13:24:14
您當前的方式在讀取主要訪問模式的情況下可提供更高的吞吐量。如果我是你,我會更努力工作:) – 2013-02-25 13:44:47