0

这是我的第一个问题,所以请对我温柔一点。

当两个线程,比如 t1 和 t2,运行在不同的 CPU 内核上同时调用共享对象上的同步方法时,即在相同的纳秒/处理器周期内,会发生什么?锁是如何以及通过什么架构元素来解决的?

这似乎是一个显而易见的问题,但我在互联网上找不到任何东西。谢谢!

4

2 回答 2

1

如今,这实际上是在硬件中实现的,因此处理器有一条特殊指令来授予一个线程从多个访问权限中。这已经从上个世纪的纯软件解决方案演变而来,如今最先进的技术就是 AtomicInteger 所代表的:一个单一的、可变的整数,它保证是线程安全的,但不会阻塞。

示例:英特尔 Haswell 架构

于 2013-11-14T17:44:29.233 回答
0

规范只是说同步方法一次只能由一个线程输入。使用什么架构机制取决于 JVM。

对于 Oracle HotSpot(几乎每个人都运行的 JVM):C++ 代码是 GNU,可能为您提供答案。

但是,如果您只需要保证它“正常工作”,那么规范就会为您提供。

于 2013-11-14T15:11:31.977 回答