任何人都可以解釋這些示例之間有什麼區別嗎?我應該使用什麼作爲Java中同步語句的鎖對象
實施例#1
public class Main {
private Object lock = new Object();
private MyClass myClass = new MyClass();
public void testMethod() {
// TODO Auto-generated method stub
synchronized (myClass) {
// TODO: modify myClass variable
}
}
}
實施例#2
package com.test;
public class Main {
private MyClass myClass = new MyClass();
private Object lock = new Object();
public void testMethod() {
// TODO Auto-generated method stub
synchronized (lock) {
// TODO: modify myClass variable
}
}
}
我應該作爲監測鎖使用,如果我需要採取有關同步護理修改變量時?
謝謝。確實,第二個例子在你的解釋之後開始變得更有意義。 –
這兩種情況有很大的不同。在第一個你鎖定你想要操作的對象。在第二個中,你鎖定了一些與被操作對象沒有明顯關係的其他對象。第二種情況需要更多空間,因爲您必須分配(否則未使用的)對象,而不是使用您保護的已有實例。 –