内部锁对 Java 类的实际含义是什么?
为了正确理解Java中并发的问题和解决方案,我正在学习官方Java教程。在其中一个页面中,他们定义了内部锁定和同步链接。在此页面中,他们说:
只要一个线程拥有固有锁,就没有其他线程可以获得相同的锁。另一个线程在尝试获取锁时将阻塞。
此外,他们还在“锁定同步方法”一节中提到:
当线程调用同步方法时,它会自动获取该方法对象的固有锁,并在方法返回时释放它。即使返回是由未捕获的异常引起的,也会发生锁定释放。
对我来说,这意味着一旦我从其中一个线程调用同步方法,我就会持有线程的固有锁,并且
固有锁在同步的两个方面都发挥着作用:强制对对象状态的独占访问,并建立对可见性至关重要的发生前关系。
另一个线程是否无法调用同一类的另一个同步方法?如果是,那么拥有同步方法的整个目的就失败了。不是吗?