Kotlin的挥发性?

And*_*ian 43 kotlin

如何在Kotlin中标记变量?

volatile public var tmpEndedAt: Long? = null

给我错误:"未解决的引用:volatile".

And*_*ian 62

我决定只使用IntelliJ中的"convert java to kotlin"函数给Kotlin一个机会.显然,设置错了.

我尝试做同样的事情,但在应用Kotlin Gradle插件并将文件放入后src/kotlin,一切正常.无论如何,谢谢你的帮助.

代码是:

@Volatile var tmpEndedAt: Long? = null
Run Code Online (Sandbox Code Playgroud)


Naz*_*sab 17

在 Kotlin 中,为了强制变量的更改对其他线程立即可见,我们可以使用注释@Volatile。\n如果变量不是在多个线程之间共享,则不需要使用volatile对该变量使用关键字。

\n

即,当您应用于volatile类的字段时,它指示 CPU 始终从RAM而不是从CPU读取它缓存读取它。它还可以防止指令重新排序;它充当记忆屏障。

\n

查看O\xe2\x80\x99Reilly\'s Kotlin 快速入门指南中的 Volatile了解更多信息。

\n


Waq*_*Haq 11

根据 Kotlin 文档Kotlin-@Volatile

将带注释的属性的 JVM 支持字段标记为 volatile,这意味着对该字段的写入会立即对其他线程可见。

因此,在 Kotlin 中,您可以将属性标记为volatile带有@Volatile注释。

例如

@Volatile var tmpEndedAt: Long? = null
Run Code Online (Sandbox Code Playgroud)