why Observable snapshot observer vector
- by han14466
In Observable's notifyObservers method, why does the coder use  arrLocal = obs.toArray();?
Why does not coder iterate vector directly? Thanks 
public void notifyObservers(Object arg) {
    Object[] arrLocal;
    synchronized (this) {
        /* We don't want the Observer doing callbacks into
        * arbitrary code while holding its own Monitor.
        * The code where we extract each Observable from 
        * the Vector and store the state of the Observer
        * needs synchronization, but notifying observers
        * does not (should not).  The worst result of any 
        * potential race-condition here is that:
        * 1) a newly-added Observer will miss a
        *   notification in progress
        * 2) a recently unregistered Observer will be
        *   wrongly notified when it doesn't care
        */
        if (!changed)
            return;
        arrLocal = obs.toArray();
        clearChanged();
    }
    for (int i = arrLocal.length-1; i>=0; i--)
        ((Observer)arrLocal[i]).update(this, arg);
}