home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 25 / CDROM25.iso / Share / prog / VJ11 / VJTRIAL.EXE / IE30Java.exe / classd.exe / sun / awt / image / ImageFetcher.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-01-27  |  2.3 KB  |  104 lines

  1. package sun.awt.image;
  2.  
  3. import java.util.Vector;
  4.  
  5. class ImageFetcher extends Thread {
  6.    static Thread[] fetchers = new Thread[4];
  7.    static final int HIGH_PRIORITY = 8;
  8.    static final int LOW_PRIORITY = 3;
  9.    private static Vector waitList;
  10.  
  11.    public static void add(ImageFetchable var0) {
  12.       synchronized(waitList){}
  13.  
  14.       try {
  15.          if (!waitList.contains(var0)) {
  16.             waitList.addElement(var0);
  17.             waitList.notify();
  18.          }
  19.       } catch (Throwable var4) {
  20.          throw var4;
  21.       }
  22.  
  23.    }
  24.  
  25.    private static ImageFetchable nextImage() {
  26.       synchronized(waitList){}
  27.  
  28.       ImageFetchable var3;
  29.       try {
  30.          ImageFetchable var0 = null;
  31.  
  32.          while(var0 == null) {
  33.             while(waitList.size() == 0) {
  34.                try {
  35.                   waitList.wait();
  36.                } catch (InterruptedException var6) {
  37.                   System.err.println("Image Fetcher interrupted!");
  38.                }
  39.             }
  40.  
  41.             var0 = (ImageFetchable)waitList.elementAt(0);
  42.             waitList.removeElement(var0);
  43.          }
  44.  
  45.          var3 = var0;
  46.       } catch (Throwable var7) {
  47.          throw var7;
  48.       }
  49.  
  50.       return var3;
  51.    }
  52.  
  53.    private ImageFetcher() {
  54.       super(getImageFetcherThreadGroup(), "Image Fetcher");
  55.    }
  56.  
  57.    static {
  58.       for(int var0 = 0; var0 < fetchers.length; ++var0) {
  59.          Thread var1 = fetchers[var0] = new ImageFetcher();
  60.          var1.setName(var1.getName() + " " + var0);
  61.          var1.setDaemon(true);
  62.          var1.start();
  63.       }
  64.  
  65.       waitList = new Vector();
  66.    }
  67.  
  68.    private static ThreadGroup getImageFetcherThreadGroup() {
  69.       ThreadGroup var0;
  70.       for(var0 = Thread.currentThread().getThreadGroup(); var0.getParent() != null; var0 = var0.getParent()) {
  71.       }
  72.  
  73.       return var0;
  74.    }
  75.  
  76.    public static boolean isFetcher(Thread var0) {
  77.       for(int var1 = 0; var1 < fetchers.length; ++var1) {
  78.          if (fetchers[var1] == var0) {
  79.             return true;
  80.          }
  81.       }
  82.  
  83.       return false;
  84.    }
  85.  
  86.    public static boolean amFetcher() {
  87.       return isFetcher(Thread.currentThread());
  88.    }
  89.  
  90.    public void run() {
  91.       while(true) {
  92.          Thread.currentThread().setPriority(8);
  93.          ImageFetchable var1 = nextImage();
  94.  
  95.          try {
  96.             var1.doFetch();
  97.          } catch (Exception var4) {
  98.             System.err.println("Uncaught error fetching image:");
  99.             ((Throwable)var4).printStackTrace();
  100.          }
  101.       }
  102.    }
  103. }
  104.