栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用Java的ReferenceQueue

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用Java的ReferenceQueue

引用队列的一种常见用法是,例如,子类

WeakReference
附加需要清理的信息,然后轮询
ReferenceQueue
来获取清理任务。

ReferenceQueue<Foo> fooQueue = new ReferenceQueue<Foo>();class ReferenceWithCleanup extends WeakReference<Foo> {  Bar bar;  ReferenceWithCleanup(Foo foo, Bar bar) {    super(foo, fooQueue);    this.bar = bar;  }  public void cleanUp() {    bar.cleanUp();  }}public Thread cleanupThread = new Thread() {  public void run() {    while(true) {      ReferenceWithCleanup ref = (ReferenceWithCleanup)fooQueue.remove();      ref.cleanUp();    }  }}public void doStuff() {  cleanupThread.start();  Foo foo = new Foo();  Bar bar = new Bar();  ReferenceWithCleanup ref = new ReferenceWithCleanup(foo, bar);  ... // From now on, once you release all non-weak references to foo,      // then at some indeterminate point in the future, bar.cleanUp() will      // be run. You can force it by calling ref.enqueue().}

例如,选择Guava的内部

CacheBuilder
实现时使用的是这种方法。
weakKeys



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/595258.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号