public void run() {

    while (true) {

      if (_done) {

        // check if we are done requesting images
        synchronized (_syncObject) {
          synchronized (_imageQueue) {
            if (_imageQueue.size() == 0) {
              _currentThread = null;
              break;
            }
          }
        }
      }

      RequestedResource resource = null;

      // request next image
      synchronized (_imageQueue) {
        if (_imageQueue.size() > 0) {
          resource = (RequestedResource) _imageQueue.elementAt(0);
          _imageQueue.removeElementAt(0);
        }
      }

      if (resource != null) {

        HttpConnection connection =
            Utilities.makeConnection(resource.getUrl(), resource.getRequestHeaders(), null);
        resource.setHttpConnection(connection);

        // signal to the browser field that resource is ready
        if (_browserField != null) {
          _browserField.resourceReady(resource);
        }
      }
    }
  }