【发布时间】:2014-04-24 15:15:56
【问题描述】:
如果我有 10 个左右的线程访问同一个变量(只读取它,不写入),java 是否会允许这些线程同时读取变量,或者每个线程都会排队等待读取?
我对标准行为感兴趣,即没有特别注意访问变量。
程序在 Linux RedHat 上运行。
【问题讨论】:
-
他们会同时阅读。据我了解,一些线程甚至可能会缓存它。
-
如果没有同步或其他锁定机制,则应该同时访问。对于 volatile 也是如此,但在这里访问主堆内存会产生额外的成本。
-
没有读取队列。读取访问是模拟运行线程,即使该字段是易失性的(前提是没有写入)。
标签: java linux multithreading shared-memory