home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &n…he Search for Life DVD 2 / DVD-ROM.iso / install / jre1_3 / lib / rt.jar / java / lang / ref / ReferenceQueue.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  1.5 KB  |  77 lines

  1. package java.lang.ref;
  2.  
  3. public class ReferenceQueue {
  4.    static ReferenceQueue NULL = new Null((1)null);
  5.    static ReferenceQueue ENQUEUED = new Null((1)null);
  6.    private Lock lock = new Lock((1)null);
  7.    private Reference head = null;
  8.  
  9.    boolean enqueue(Reference var1) {
  10.       synchronized(var1) {
  11.          if (var1.queue == ENQUEUED) {
  12.             boolean var3 = false;
  13.             return var3;
  14.          } else {
  15.             Lock var4 = this.lock;
  16.             synchronized(var4) {
  17.                var1.queue = ENQUEUED;
  18.                var1.next = this.head == null ? var1 : this.head;
  19.                this.head = var1;
  20.                this.lock.notifyAll();
  21.                boolean var5 = true;
  22.                return var5;
  23.             }
  24.          }
  25.       }
  26.    }
  27.  
  28.    private Reference reallyPoll() {
  29.       if (this.head != null) {
  30.          Reference var1 = this.head;
  31.          this.head = var1.next == var1 ? null : var1.next;
  32.          var1.queue = NULL;
  33.          var1.next = var1;
  34.          return var1;
  35.       } else {
  36.          return null;
  37.       }
  38.    }
  39.  
  40.    public Reference poll() {
  41.       Lock var1 = this.lock;
  42.       synchronized(var1) {
  43.          Reference var2 = this.reallyPoll();
  44.          return var2;
  45.       }
  46.    }
  47.  
  48.    public Reference remove(long var1) throws IllegalArgumentException, InterruptedException {
  49.       if (var1 < 0L) {
  50.          throw new IllegalArgumentException("Negative timeout value");
  51.       } else {
  52.          Lock var3 = this.lock;
  53.          synchronized(var3) {
  54.             Reference var4 = this.reallyPoll();
  55.             if (var4 != null) {
  56.                return var4;
  57.             } else {
  58.                do {
  59.                   this.lock.wait(var1);
  60.                   var4 = this.reallyPoll();
  61.                   if (var4 != null) {
  62.                      return var4;
  63.                   }
  64.                } while(var1 == 0L);
  65.  
  66.                Object var7 = null;
  67.                return (Reference)var7;
  68.             }
  69.          }
  70.       }
  71.    }
  72.  
  73.    public Reference remove() throws InterruptedException {
  74.       return this.remove(0L);
  75.    }
  76. }
  77.