Решение заключается в синхронизации методов getByName и emoveByName. Но почему нельзя синхронизировать по объекту container ?
То есть этот код не проходит валидацию.
public GenericsBean getByName(String name) { synchronized (container) {
return container.get(name);
}
}
public GenericsBean removeByName(String name) { synchronized (container) {
return container.remove(name);
}
}
а этот проходит
public synchronized GenericsBean getByName(String name) {return container.get(name); }
public synchronized GenericsBean removeByName(String name) {
return container.remove(name);
}
container это поле класса где находятся эти методы
private Map<String, GenericsBean> container = new HashMap<String, GenericsBean>();