From b25446271aa3da08cc965b0834ae89c4dd23ee0c Mon Sep 17 00:00:00 2001 From: Mike Hearn Date: Fri, 2 Mar 2012 15:08:36 +0100 Subject: [PATCH] Synchronize on event listeners in EventListenerInvoker. --- .../bitcoin/utils/EventListenerInvoker.java | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/com/google/bitcoin/utils/EventListenerInvoker.java b/src/com/google/bitcoin/utils/EventListenerInvoker.java index d0184f3e..2f4f1d09 100644 --- a/src/com/google/bitcoin/utils/EventListenerInvoker.java +++ b/src/com/google/bitcoin/utils/EventListenerInvoker.java @@ -39,13 +39,15 @@ public abstract class EventListenerInvoker { public static void invoke(List listeners, EventListenerInvoker invoker) { - for (int i = 0; i < listeners.size(); i++) { - E l = listeners.get(i); - synchronized (l) { - invoker.invoke(l); - } - if (listeners.get(i) != l) { - i--; // Listener removed itself. + synchronized (listeners) { + for (int i = 0; i < listeners.size(); i++) { + E l = listeners.get(i); + synchronized (l) { + invoker.invoke(l); + } + if (listeners.get(i) != l) { + i--; // Listener removed itself. + } } } }