JDK 1.1 for Solaris Developer's Guide

Asynchronous Loading

To improve (asynchronous) loading performance, use your own imageUpdate() method to override imageUpdate(). imageUpdate() can cause more repainting than you might want..


//wait for the width information to be loaded
while (image.getWidth(null) == -1 {
		try {
			Thread.sleep(200);
		}
		catch(InterruptedException e) {
		}
	}  
	if (!haveWidth) {
		synchronized (im) {
			if (im.getWidth(this) == -1) {
				try {
					im.wait();
         	}
        	catch (InterruptedException) {
				}
			}
		}
//If we got this far, the width is loaded, we will never go thru
// all that checking again.
		haveWidth = true;
	} 
... 
public boolean imageUpdate(Image img, int flags, int x, int y, int width, \
			int height) {
		boolean moreUpdatesNeeded = true;
		if ((flags&ImageObserver.WIDTH)!= 0 {
			synchronized (img) {
				img.notifyAll();
				moreUpdatesNeeded = false;
			}
		}
		return
		moreUpdatesNeeded;
}