1
3
源代码中唯一真正明显的事情与
一个潜在的问题是易变变量的读取可能会对某些多处理器机器产生性能影响。 注意,这里我们只看几百个循环。 |
2
2
最近的JVM使用了一种称为“偏向锁”的技术,如果只有一个线程访问给定的锁,那么锁获取几乎是免费的。当第二个线程第一次尝试访问锁时,对原始访问器的“偏向”将被撤销,并且锁将成为一个普通/轻量级锁,需要原子操作来获取(有时需要释放一个)。 偏向锁和普通锁之间的性能差异可以是一个数量级(比如5个周期对50个周期),这与您的度量一致。这里讨论的锁可能是 first reply 回答你的问题。更详细地描述了偏向锁 here 如果你感兴趣的话。 即使忽略偏向锁,尝试获得相同锁的两个或多个线程在聚合吞吐量上通常比单个线程慢得多(因为它们争用包含锁字的缓存线)。 |
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |
user1700890 · 了解交互式代理Python API中的线程 2 年前 |
AntonBoarf · 为什么要将实例变量指定给局部变量? 2 年前 |
rhymes · 如何让线程操作相同的java列表 2 年前 |