首页 > 代码库 > 用for(PhantomReference ref:ref_array循环出ref时的一个问题

用for(PhantomReference ref:ref_array循环出ref时的一个问题

技术分享

  我用PhantomReference实现一个实时监视对象数量的小功能,上图代码片断中,ref_array是所有对象的虚引用的集合,我发现了一个问题,

就是当暴力测试的时候不时会抛技术分享这个错误,即是当在for遍历

ref_array还没遍历完的时候,系统回收对象,ref_array中的虚引用被拿到ReferenceQueue中,这时由于还没遍历结束,所以会抛如此错误。

后来,我将for each循环换成for(;;)循环,问题就解决了。

用for(PhantomReference ref:ref_array循环出ref时的一个问题