簡而言之,我想知道這是否會改變行爲。我假設是的,因爲調用someMethod()會鎖定整個對象,而不是隻是列表對象?但我仍然對這個同步的東西很陌生,所以我想要一些更受教育的反饋。從同步塊調用此同步方法可以嗎?
的面前:
public void run() {
int i = 0;
while (!end) {
synchronized (list) {
while (list.size() == i) {
try {
list.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
的經過:
public void run() {
int i = 0;
while (!end) {
synchronized (list) {
while (list.size() == i) {
someMethod();
}
}
}
}
public synchronized void someMethod() {
try {
list.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
欣賞它,謝謝! – Badger