gpt4 book ai didi

java - 为 PhantomReference 应用程序创建可重复的测试

转载 作者:行者123 更新时间:2023-12-02 07:18:50 27 4
gpt4 key购买 nike

考虑一个使用 PhantomReferences 来避免终结器的库,同时确保释放一些 JNI 资源。

一种架构涉及引用队列和阻塞在引用队列上执行清理操作的线程。

现在的问题是:如何对这一切进行测试?

  1. 设置系统
  2. 创建感兴趣的对象
  3. 让它成为垃圾
  4. 系统.gc()
  5. 以某种方式等待线程醒来,闻到咖啡的味道,然后完成工作
  6. 断言内部计数器已被勾选以证明所有这一切都发生了

Thread.sleep() 有效,但对于第 5 项来说令人不安。Thread.yield() 根本不可靠。还有哪些其他选择(如果有)?

最佳答案

如果您可以对相关库进行更改,请传递可选的 BlockingQueue<Reference?>>进入清理代码,以便它可以发出完成信号。如果队列存在,则清理代码在执行清理后将对队列的引用加入队列。测试代码可以调用BlockingQueue.poll(timeout) -- 清理完成后立即接收引用,或者如果清理未在您确定的合理上限超时时间内完成,则超时。

关于java - 为 PhantomReference 应用程序创建可重复的测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14532957/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com