Try to fix ConcurrentModificationException

This commit is contained in:
huanghongxun 2019-04-25 13:38:44 +08:00
parent f4b5e061a4
commit c209617ee7

View File

@ -72,6 +72,10 @@ public final class EventManager<T extends Event> {
return Event.Result.DEFAULT;
}
private synchronized void removeConsumer(Consumer<T> consumer) {
handlers.removeValue(consumer);
}
private class WeakListener implements Consumer<T> {
private final WeakReference<Consumer<T>> ref;
@ -83,7 +87,7 @@ public final class EventManager<T extends Event> {
public void accept(T t) {
Consumer<T> listener = ref.get();
if (listener == null) {
handlers.removeValue(this);
removeConsumer(this);
} else {
listener.accept(t);
}