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

  1. package sun.awt;
  2.  
  3. public class ScreenUpdater extends Thread {
  4.    private ScreenUpdaterEntry first;
  5.    public static final ScreenUpdater updater = new ScreenUpdater();
  6.  
  7.    public void notify(UpdateClient var1) {
  8.       this.notify(var1, 100L, (Object)null);
  9.    }
  10.  
  11.    public synchronized void notify(UpdateClient var1, long var2) {
  12.       this.notify(var1, var2, (Object)null);
  13.    }
  14.  
  15.    public synchronized void notify(UpdateClient var1, long var2, Object var4) {
  16.       long var5 = System.currentTimeMillis() + var2;
  17.       long var7 = this.first != null ? this.first.when : -1L;
  18.       if (this.first != null) {
  19.          if (this.first.client == var1 && this.first.arg == var4) {
  20.             if (var5 >= this.first.when) {
  21.                return;
  22.             }
  23.  
  24.             this.first = this.first.next;
  25.          } else {
  26.             for(ScreenUpdaterEntry var9 = this.first; var9.next != null; var9 = var9.next) {
  27.                if (var9.next.client == var1 && var9.next.arg == var4) {
  28.                   if (var5 >= var9.next.when) {
  29.                      return;
  30.                   }
  31.  
  32.                   var9.next = var9.next.next;
  33.                   break;
  34.                }
  35.             }
  36.          }
  37.       }
  38.  
  39.       if (this.first != null && this.first.when <= var5) {
  40.          ScreenUpdaterEntry var11;
  41.          for(var11 = this.first; var11.next != null && var11.next.when <= var5; var11 = var11.next) {
  42.          }
  43.  
  44.          var11.next = new ScreenUpdaterEntry(var1, var5, var4, var11.next);
  45.       } else {
  46.          this.first = new ScreenUpdaterEntry(var1, var5, var4, this.first);
  47.       }
  48.  
  49.       if (var7 != this.first.when) {
  50.          super.notify();
  51.       }
  52.  
  53.    }
  54.  
  55.    private ScreenUpdater() {
  56.       super(getScreenUpdaterThreadGroup(), "Screen Updater");
  57.       ((Thread)this).start();
  58.    }
  59.  
  60.    private static ThreadGroup getScreenUpdaterThreadGroup() {
  61.       ThreadGroup var0;
  62.       for(var0 = Thread.currentThread().getThreadGroup(); var0.getParent() != null; var0 = var0.getParent()) {
  63.       }
  64.  
  65.       return var0;
  66.    }
  67.  
  68.    private synchronized ScreenUpdaterEntry nextEntry() throws InterruptedException {
  69.       while(true) {
  70.          if (this.first == null) {
  71.             this.wait();
  72.          } else {
  73.             long var1 = this.first.when - System.currentTimeMillis();
  74.             if (var1 <= 0L) {
  75.                ScreenUpdaterEntry var3 = this.first;
  76.                this.first = this.first.next;
  77.                return var3;
  78.             }
  79.  
  80.             this.wait(var1);
  81.          }
  82.       }
  83.    }
  84.  
  85.    public void run() {
  86.       try {
  87.          while(true) {
  88.             ((Thread)this).setPriority(4);
  89.             ScreenUpdaterEntry var1 = this.nextEntry();
  90.             ((Thread)this).setPriority(5);
  91.  
  92.             try {
  93.                var1.client.updateClient(var1.arg);
  94.             } catch (Throwable var4) {
  95.                var4.printStackTrace();
  96.             }
  97.  
  98.             Object var6 = null;
  99.          }
  100.       } catch (InterruptedException var5) {
  101.       }
  102.    }
  103. }
  104.