Синхронизированный HashMap в многопоточной среде не работает [закрыто]JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Синхронизированный HashMap в многопоточной среде не работает [закрыто]

Сообщение Anonymous »

У меня есть сценарий, в котором мне нужен максимальный размер моего HashMap, равный 10 000. Любые вставленные записи должны удалять самую старую запись и переходить к вставке. Это для многопоточного сценария.
Я наблюдаю странный сценарий, при котором превышается максимальный предел. Я вижу, что размер продолжает увеличиваться более чем на 10000 (т. е.) на 20000+. Вот код:

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

public class FixedSizeLinkedHashMap extends LinkedHashMap {
private final int maxSize;

public FixedSizeLinkedHashMap(int maxSize) {
super(maxSize, 0.75f, true);
this.maxSize = maxSize;
}

@Override
protected synchronized boolean removeEldestEntry(Map.Entry eldest) {
return size() > maxSize;
}

@Override
public synchronized V put(K key, V value) {
return super.put(key, value);
}

@Override
public synchronized V get(Object key) {
return super.get(key);
}

@Override
public synchronized V remove(Object key) {
return super.remove(key);
}

@Override
public synchronized void clear() {
super.clear();
}
}
В вызывающем классе, который я использовал

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

fixedsizeLhm = new FixedSizeLinkedHashMap(10000);
Я что-то упускаю?


Подробнее здесь: https://stackoverflow.com/questions/789 ... ot-working
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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