我读到java中的锁是在实例(对象)的基础上获得的(在实例方法的情况下)
还可以在类的对象上获取锁(在静态方法的情况下)。
但我想知道特定对象一次可以获得多少个锁?
一个对象可以同时拥有多个锁吗?
如果是,请举例说明。
请帮我理清我的概念。
最佳答案
每个同步块(synchronized block)仅针对一个对象。对象不会拥有锁。它是锁定对象以对其进行操作的执行线程。
始终在对象上获取锁。例如下面是可以获得锁的两个实例。第一个锁定类(对象)的实例。
Object obj = new Object();
synchronized(obj) {
workOnIt(obj);
}
第二个看起来像是锁定了一个类。但 Test.class 是我的 Test 类的 java.lang.Class 实例的特殊表示。
synchronized(Test.class) {
// call some static method here
}
关于java - java多线程中实例上获取的锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5068061/