В синхронизированном блоке я могу синхронизировать на сборе объектов монитора?JAVA

Программисты JAVA общаются здесь
Anonymous
В синхронизированном блоке я могу синхронизировать на сборе объектов монитора?

Сообщение Anonymous »

У меня есть класс, который я хочу сделать. В нем эти 2 функции: < /p>

Код: Выделить всё

public void add(String param1, String param2) {
// do something
}

public void clear() {
// do something else
}
Я хочу, чтобы функция add () была синхронизирована только , когда оба параметра схожи (могут работать только в одно и то же время, если какой -либо параметр отличается)
Я хочу, чтобы функция clear () синхронизировалась на каждом блокировании (может запустить только при add () new Object());
synchronized (lock) {
// do something
}
}
[/code]
Тем не менее, я не могу найти способ разрешить только clear () при выпуске всех замков. Естественно, я попытался поместить непосредственные блокировки или locks.values () в синхронизированный, как объект монитора, но не работал.
это возможно? Или есть альтернативы?

Для получения подробной информации, действие add () - положить (если отсутствует) пары ключей/значения на два concurrentmaps, а действие clear () - опустошить оба карты. Я хочу избежать случая, когда clear () umpted обе Map, в то время как add () только что закончил один из них и запускает следующий.>

Подробнее здесь: https://stackoverflow.com/questions/797 ... or-objects

Вернуться в «JAVA»