public void run(){
  final FetcherInfo info=FetcherInfo.getFetcherInfo();
  try {
    fetchloop();
  }
 catch (  Exception e) {
    e.printStackTrace();
  }
 finally {
synchronized (info.waitList) {
      Thread me=Thread.currentThread();
      for (int i=0; i < info.fetchers.length; i++) {
        if (info.fetchers[i] == me) {
          info.fetchers[i]=null;
          info.numFetchers--;
        }
      }
    }
  }
}

public void run ( ) { final FetcherInfo info = FetcherInfo . getFetcherInfo ( ) ; try { fetchloop ( ) ; } catch ( Exception e ) { e . printStackTrace ( ) ; } finally { synchronized ( info . waitList ) { Thread me = Thread . currentThread ( ) ; for ( int i = 0 ; i < info . fetchers . length ; i ++ ) { if ( info . fetchers [ i ] == me ) { info . fetchers [ i ] = null ; info . numFetchers -- ; } } } } }
the main run ( ) method of an imagefetcher thread . calls fetchloop ( ) to do the work , then removes itself from the array of imagefetchers .
