![]() |
1
47
这个
它会坐以待毙
输出:
|
![]() |
2
11
如果这些方法在同一个监视器上同步,那么它们就不能在不同的线程中同时执行。当第二个线程到达监视器条目(本例中是synchronized方法的开始)时,它将阻塞,直到第一个线程释放监视器。
在本例中,jconsole报告的阻塞线程的实际状态如下
假设所有方法都是普通实例方法,那么它们将共享同一个监视器 . 也就是说,如果你有这样的东西:
在本例中,第二个线程将能够调用该方法,因为它试图获取
如果您有静态方法,那么它们将获得类本身的显式监视器(
|
![]() |
3
4
不,不可能。这是唯一的一点
|
![]() |
4
1
在同一个示例中,t2可以访问不同步的方法m4。 锁定 synchronized 方法
回到第二个问题: 线程t2处于阻塞状态,正在等待线程t1释放锁。 来自java documentation
制作
|
![]() |
user107586 · 如何处理等待句柄不会导致无限循环? 7 月前 |
![]() |
ron burgundy · 获取-释放语义是否跨线程传递?[副本] 7 月前 |
![]() |
BenjiFB · C#内存缓存:在一次操作中追加到列表? 7 月前 |
![]() |
András Takács · Python多线程问题 11 月前 |
|
András Takács · Python多线程错误 11 月前 |