1.注意:请尽可能避免在 DataStore 数据读取时阻塞线程。阻塞界面线程可能会导致 ANR 或界面卡顿,而阻塞其他线程可能会导致死锁。
DataStore 的主要优势之一是异步 API,但可能不一定始终能将周围的代码更改为异步代码。如果您使用的现有代码库采用同步磁盘 I/O,或者您的依赖项不提供异步 API,就可能出现这种情况。
Kotlin 协程提供 runBlocking() 协程构建器,以帮助消除同步与异步代码之间的差异。您可以使用 runBlocking() 从 DataStore 同步读取数据。RxJava 在 Flowable 上提供阻塞方法。以下代码会阻塞发起调用的线程,直到 DataStore 返回数据:
2.云上会议-视频录制工具类 :LiveRecordUtil
1673488995035.png
中单例模式中双重检查所多线程并发场景下的不安全问题解决;原因:由于指令重排可能会导致某些线程访问到未初始化的变量导致的不安全,可能的空指针异常问题的避免以及单例模式在多线程的并发场景下由于指令重排可能会导致某些线程访问到未初始化的变量问题解决。







网友评论