Module java.base
Package java.lang.ref

Class ReferenceQueue<T>

java.lang.Object
java.lang.ref.ReferenceQueue<T>
类型参数:
T - 引用对象的类型

public class ReferenceQueue<T> extends Object
引用队列,注册的引用对象在适当的可达性更改被检测后,会被垃圾收集器追加到其中。
自 JDK 版本:
1.2
  • Constructor Summary

    Constructors
    Constructor
    Description
    构造一个新的引用对象队列。
  • Method Summary

    Modifier and Type
    Method
    Description
    Reference<? extends T>
    poll()
    轮询此队列以查看是否有引用对象可用。
    Reference<? extends T>
    remove()
    移除此队列中的下一个引用对象,阻塞直到有一个可用为止。
    Reference<? extends T>
    remove(long timeout)
    移除此队列中的下一个引用对象,阻塞直到有一个可用或给定的超时时间到期。

    Methods declared in class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • ReferenceQueue

      public ReferenceQueue()
      构造一个新的引用对象队列。
  • Method Details

    • poll

      public Reference<? extends T> poll()
      轮询此队列以查看是否有引用对象可用。如果有一个可用且无需进一步延迟,则将其从队列中移除并返回。否则,此方法立即返回null
      返回:
      如果立即可用,则为一个引用对象,否则为null
    • remove

      public Reference<? extends T> remove(long timeout) throws InterruptedException
      移除此队列中的下一个引用对象,阻塞直到有一个可用或给定的超时时间到期。

      此方法不提供实时保证:它安排超时,就好像调用Object.wait(long)方法一样。

      参数:
      timeout - 如果为正数,则在等待将引用添加到此队列时最多阻塞timeout毫秒。如果为零,则无限期阻塞。
      返回:
      如果在指定的超时时间内可用,则为一个引用对象,否则为null
      抛出:
      IllegalArgumentException - 如果超时参数的值为负数
      InterruptedException - 如果超时等待被中断
    • remove

      public Reference<? extends T> remove() throws InterruptedException
      移除此队列中的下一个引用对象,阻塞直到有一个可用为止。
      返回:
      一个引用对象,阻塞直到有一个可用
      抛出:
      InterruptedException - 如果等待被中断