在 Kotlin 的协程中,当使用无阻塞调用或挂起函数时,其可能采用协作式(cooperative)多任务实现。因此,在协程作用域之外访问、修改 ArrayList 时,可能会出现为空的问题。
解决此问题的方法是,使用线程安全的类型(Thread-safe Types)或使用线程安全的并发集合类(Concurrent Collection Classes),如:
使用线程安全类型
val threadSafeList = mutableListOf
使用线程安全的并发集合类
val concurrentList = CopyOnWriteArrayList
这些线程安全的类型或类可以防止多个线程并发访问列表时的错误情况。