我一直在阅读有关 SMP 机器(x86/ARM)和编译器重新排序以提高效率的信息。现在我想创建一个计数器,变量作为 ActivityLifecycleCallbacks 实现的私有成员存在。对这个变量的操作是在来自 Android 的回调上执行的(它总是在 UI 线程上)。
现在因为“x++”不是原子语句。我需要使用 AtomicInteger 吗?即使变量总是只能在 UI 线程上访问?
我一直在阅读有关 SMP 机器(x86/ARM)和编译器重新排序以提高效率的信息。现在我想创建一个计数器,变量作为 ActivityLifecycleCallbacks 实现的私有成员存在。对这个变量的操作是在来自 Android 的回调上执行的(它总是在 UI 线程上)。
现在因为“x++”不是原子语句。我需要使用 AtomicInteger 吗?即使变量总是只能在 UI 线程上访问?
如果它仅由 UI 线程访问,那么从技术上讲,不,您不需要使用AtomicInteger
. 当我说访问时,我的意思是读取和写入。
但是,考虑到您在并发架构下工作,使用类似AtomicInteger
或更高性能的并发对象可能更安全LongAdder。