简而言之,我想知道这是否会改变行为。我假设是的,因为调用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