同一个对象中的一个synchronized方法如果已有一个线程进入,则其它的线程必须等该线程结束后才能进入该方法。那么,如果一个类中有多个synchronized方法,会有什么情况呢?
看下面一段代码:
运行结果如下:
很明显,当对象t2的synchronized方法test2被线程tt调用时,主线程也无法进入其test1方法,直到线程tt对test2方法的调用结束,主线程才能进入test1方法。
结论,对于synchronized方法,Java采用的是对象锁定的方式,当任何一个synchronized方法被访问的时候,该对象中的其它synchronized方法将全部不能被访问。
下一篇: Java牛角尖【010】: 当对象a.equals(b)时,a.hashCode == b.hashCode吗?
Java同步方法探究

本文通过一个具体的示例探讨了Java中synchronized方法的工作原理。当一个线程正在执行对象的一个同步方法时,其他线程尝试访问该对象的其他同步方法将会被阻塞,直至当前线程释放锁。
209





