Обычно есть лучший способ, чем использовать ожидание / уведомление.Можете ли вы объяснить, что вы пытаетесь сделать, и, возможно, мы можем предложить альтернативы, например, использовать библиотеку параллелизма в Java.
Гораздо лучшая структура - это использование управляемой событиями обработки.Когда цена меняется, вы хотите, чтобы конкретные действия происходили.Вы должны инициировать эти действия из-за изменения цены.
public void putPrice(String s,int i) {
if (getPrice(s) == i) return;
prices.put(s, i);
List<Runnable> onChange = priceListeners.get(s);
if (onChange==null) return;
for(Runnable run: onChange) run.run();
}
Вместо использования Runnable вы можете создать интерфейс, который уведомляет, какой ключ / цена изменились.Таким образом, вы можете изменить любое количество цен только одной веткой.(Или небольшое количество тем по вашему выбору)