У меня есть приложение Java EE на Glassfish 3.1.2.2ConcurrentModificationException хотя @Lock (LockType.READ) аннотация
и Рид() я в следующем коде в ConcurrentModificationException:
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
спасибо, я поменю HashMap на Collections.synchronizedSet (..). Без блокировки Glassfish. – DSmelanskij
Ваш текущий способ дает большую пропускную способность в случае шаблона доступа, доступного для чтения. Я бы поработал над этим немного больше, если бы был вами :) –