home *** CD-ROM | disk | FTP | other *** search
- package sun.awt.image;
-
- import java.util.Vector;
-
- class ImageFetcher extends Thread {
- static Thread[] fetchers = new Thread[4];
- static final int HIGH_PRIORITY = 8;
- static final int LOW_PRIORITY = 3;
- private static Vector waitList;
-
- public static void add(ImageFetchable var0) {
- synchronized(waitList){}
-
- try {
- if (!waitList.contains(var0)) {
- waitList.addElement(var0);
- waitList.notify();
- }
- } catch (Throwable var4) {
- throw var4;
- }
-
- }
-
- private static ImageFetchable nextImage() {
- synchronized(waitList){}
-
- ImageFetchable var3;
- try {
- ImageFetchable var0 = null;
-
- while(var0 == null) {
- while(waitList.size() == 0) {
- try {
- waitList.wait();
- } catch (InterruptedException var6) {
- System.err.println("Image Fetcher interrupted!");
- }
- }
-
- var0 = (ImageFetchable)waitList.elementAt(0);
- waitList.removeElement(var0);
- }
-
- var3 = var0;
- } catch (Throwable var7) {
- throw var7;
- }
-
- return var3;
- }
-
- private ImageFetcher() {
- super(getImageFetcherThreadGroup(), "Image Fetcher");
- }
-
- static {
- for(int var0 = 0; var0 < fetchers.length; ++var0) {
- Thread var1 = fetchers[var0] = new ImageFetcher();
- var1.setName(var1.getName() + " " + var0);
- var1.setDaemon(true);
- var1.start();
- }
-
- waitList = new Vector();
- }
-
- private static ThreadGroup getImageFetcherThreadGroup() {
- ThreadGroup var0;
- for(var0 = Thread.currentThread().getThreadGroup(); var0.getParent() != null; var0 = var0.getParent()) {
- }
-
- return var0;
- }
-
- public static boolean isFetcher(Thread var0) {
- for(int var1 = 0; var1 < fetchers.length; ++var1) {
- if (fetchers[var1] == var0) {
- return true;
- }
- }
-
- return false;
- }
-
- public static boolean amFetcher() {
- return isFetcher(Thread.currentThread());
- }
-
- public void run() {
- while(true) {
- Thread.currentThread().setPriority(8);
- ImageFetchable var1 = nextImage();
-
- try {
- var1.doFetch();
- } catch (Exception var4) {
- System.err.println("Uncaught error fetching image:");
- ((Throwable)var4).printStackTrace();
- }
- }
- }
- }
-