我对volatile
Java中关键字的用法感到困惑。我在互联网上阅读了很多文章,但仍然一无所获。我的脑海里有很多问题想问:
首先,维基百科和许多博客都说所有volatile
变量都存储在线程本地内存中,而不是所有线程共享的主内存!我有点困惑,他们的意思是stack memory
?我知道每个线程都有自己的stack memory
存储自己的原始文字和对象引用的地方。
如果是这样,那么如果volatile
变量是对象引用而不是原始文字会发生什么?我猜所有的对象都存储在堆空间而不是堆栈内存中。
其次,您能否通过示例详细说明volatile
关键字的工作原理以及我们应该何时使用它?