Android UI线程绑定原子整数

Android UI线程绑定原子整数,android,multithreading,atomic,smp,atomicinteger,Android,Multithreading,Atomic,Smp,Atomicinteger,我一直在阅读有关SMPs机器(x86/ARM)和编译器重新排序以提高效率的文章。现在我想创建一个计数器,变量作为ActivityLifecycleCallbacks实现的私有成员存在。对这个变量的操作是在来自Android的回调上执行的(在总是在UI线程中) 现在,因为“x++”不是一个原子语句。我需要使用AtomicInteger吗?即使变量始终仅在UI线程上访问 如果它仅由UI线程访问,那么从技术上讲,不需要使用AtomicInteger。当我说访问时,我指的是读和写 但是,考虑到您是在并发

我一直在阅读有关SMPs机器(x86/ARM)和编译器重新排序以提高效率的文章。现在我想创建一个计数器,变量作为ActivityLifecycleCallbacks实现的私有成员存在。对这个变量的操作是在来自Android的回调上执行的(在总是在UI线程中)


现在,因为“x++”不是一个原子语句。我需要使用AtomicInteger吗?即使变量始终仅在UI线程上访问

如果它仅由UI线程访问,那么从技术上讲,不需要使用
AtomicInteger
。当我说访问时,我指的是读和写


但是,考虑到您是在并发体系结构下工作的,仅使用诸如
AtomicInteger
或更高性能的并发对象可能更安全。

不确定“更安全”是什么意思。我想对它有一个坚实、具体和自信的理解。我不想让自己在做正确的事情时感到不安全!我的第一条评论是答案,如果UI线程是唯一一个接触该字段的线程,那么您不需要原子整数。这也是我的理解,但是我想在这里指出,不仅仅是我处理SMPs。大多数较新的Android设备都基于SMP架构,如x86或ARM。因此,大多数安卓开发者实际上只在SMPs上运行,或者他们的应用程序只在SMPs上运行。