多线程中的java静态变量
多线程中的I found that declaring a variable as static makes no sense
。我认为,这是因为every thread has its own stack
。这是唯一的原因吗
我知道。但为什么呢
你可以在下面搜索框中键入要查询的问题!
多线程中的I found that declaring a variable as static makes no sense
。我认为,这是因为every thread has its own stack
。这是唯一的原因吗
我知道。但为什么呢
# 1 楼答案
恐怕你的说法正好相反。静态变量是一种共享资源,可用于在不同线程之间交换一些信息。在访问这种共享资源时,我们需要小心。因此,我们需要确保对多线程环境中静态变量的访问是同步的
这是一个正确的说法
Each thread has its own stack but they share the process heap.
堆栈只保存本地变量,而不保存堆上的变量。静态变量存储在堆的PermGen
部分,因此对它们的访问应该得到很好的保护# 2 楼答案
如果在多线程环境中更改变量,新值可能不一定可见,因为它可能会被缓存。当然,对于静态变量也是如此。如果不使用同步块,则可以考虑使用{< CD1> }。这还将确保各个线程获得更新的副本,而无需同步。 你的申请是否足够取决于你的要求