Никак не могу разобраться. Есть класс А. В нем есть вложенные классы B и C. В классе А в поле хранится потокозащищенная ConcurrentHashMap. Классы B и C - Runnable и куча их инстансов крутятся и в методе run переписывают данные в этой мапе класса А. Всё это делается в мониторе
...run() {
synchronized (mymap) {
if (mymap.containsKey(somekey)) {
mymap.remove(somekey);
mymap.put(newkey, this);
}
}
}
Этот кусок кода идентичен в классах B и C. Почему-то при входе в монитор (казалось бы), остальные инстансы потоков не останавливаются. В чем может быть дело, кто сталкивался?