- 博客(5)
- 收藏
- 关注
原创 Java使用ReferenceQueue来监听弱引用被垃圾回收的事件
最后,我们使用referenceQueue.poll()方法检查referenceQueue中是否有引用被回收。如果有引用被回收,poll()方法会返回被回收的引用,否则返回null。在Java中,你可以通过使用ReferenceQueue来监听弱引用被垃圾回收的事件。ReferenceQueue是一个专门用于弱引用、软引用和虚引用的队列,它会在相应的引用被垃圾回收时接收通知。请注意,垃圾回收的执行时间是不确定的,因此无法保证在执行poll()时一定能够获取到已回收的引用。
2024-03-06 15:03:05
311
原创 Channel转换为Flow
receiveAsFlow转换为flow的时候,多个collect同时接收事件,每个事件仅被一个collect处理。参考https://blog.fishedee.com/2021/12/08/Kotlin语言/#channel。consumeAsFlow只支持一个collect来接收数据,第二次collect会抛出异常。channel.recevieAsFlow 和consumeAsFlow的区别。
2024-01-11 11:17:14
457
原创 SupervisorJob和supervisorScope的区别
supervisorJob只是对原job进行了一次包装,详情请看 kotlinx.coroutines.JobSupport里面childCancelled 和notifyCancelling的实现。supervisorScope 表示下面的launch都是supervisorJob,所以task1和task2互不影响。SupervisorJob只能表示当前级别的错误拦截,其中子job还是不会被拦截。task1报错,task2也被取消了。可见sc层级的兄弟job都互不影响。
2023-10-25 00:27:58
118
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人