List list = null;
public void endWorking() {
endFlag = true;
try {
synchronized (list) {
list.notify(); //这有用吗?
for (; !emailList.isEmpty(); ){
// do some work
list.remove(0);
}
}
} catch (Exception e) {
log.error("Error happened when finish sending.", e);
}
}问题:当前线程获得list的管理权后,进入synchronized块(list),
然后list.notify();唤醒其他线程,这有意义吗?因为即使线程被唤醒,他还是不能获得list的权限,所以这个操作时没有意义的!不知道我的理解对不对?
public void endWorking() {
endFlag = true;
try {
synchronized (list) {
list.notify(); //这有用吗?
for (; !emailList.isEmpty(); ){
// do some work
list.remove(0);
}
}
} catch (Exception e) {
log.error("Error happened when finish sending.", e);
}
}问题:当前线程获得list的管理权后,进入synchronized块(list),
然后list.notify();唤醒其他线程,这有意义吗?因为即使线程被唤醒,他还是不能获得list的权限,所以这个操作时没有意义的!不知道我的理解对不对?
然后才进行业务处理的!for (; !emailList.isEmpty(); ){
// do some work
list.remove(0);
}