3

如果两个线程尝试在完全相同的时间以精确的毫秒或(无论最小 CPU 单元是多少)访问同步方法。会发生什么?如果它们也具有相同的优先级,JVM/系统将如何解决这个问题。会不会造成死锁?另外,这些关于锁的信息存储在哪里?

4

2 回答 2

5

这就是线程的全部意义所在。操作系统的作业调度程序将允许一个先于另一个。不会发生死锁。

实际上,作业调度程序是用于进程的重量级分叉。Thread轮流执行或进入同步块的 JVM 句柄。

于 2012-11-17T19:30:51.173 回答
2

进入块在内部被翻译为在操作系统中synchronized获得一些原子互斥锁或信号量。这些构造保证是原子的。因此不会发生任何错误,一种方法总是第一种。即使在多核、多 CPU 的机器中,也只有一个线程可以一次获得信号量/互斥量。

如果肯定不会造成死锁。要创建死锁,您需要两个资源来竞争。

于 2012-11-17T19:32:03.047 回答