On Tue, Jun 17, 2008 at 1:57 PM, Stefan Bodewig <[EMAIL PROTECTED]> wrote:
> On Tue, 17 Jun 2008, Stefan Bodewig <[EMAIL PROTECTED]> wrote:
>
>> I suggest the following changes:
>>
>> * lock the listener collection in the add/remove listener methods,
>>   in fireMessageLogged lock the listeners, clone them, give up the
>>   lock, work on the clone
>
> alternatively copy listeners on change in the add/remove cases since
> we are probably writing far more log messages than we add or remove
> listeners.  Same would apply to the delegates in PropertyHelper.

We currently do copy the listeners.
    public synchronized void addBuildListener(BuildListener listener) {
     ....
        Vector newListeners = getBuildListeners();
        newListeners.addElement(listener);
        listeners = newListeners;

Simply removing the lock on the project object would
not help as multiple threads could call the add/remove method at the same time.

We would need something like jdk5's CopyOnWriteArrayList<E> to do this
correctly.

Peter

>
> Stefan
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to