public class Example {
private boolean jobInProgress = false;
public void job() {
lock(this) {
if (jobInProgress) {
return;
}
jobInProgress = true;
}
// Code to execute job goes here
// ...
}
void jobCompleted() {
lock(this) {
jobInProgress = false;
}
}
}我从维基百科得到了这段代码,我有一件事我不确定。
为什么在返回语句之后没有在锁定的块中设置jobInProgress = true;?更明确一点的是,我将尝试给出一个场景:
发布于 2015-05-26 12:47:23
你把自己弄糊涂了
lock(this) {
if (jobInProgress) {
return;
} // <= closing brace of if
// INSIDE LOCK, OUTSIDE IF
jobInProgress = true;
} // <= closing brace of lock我会注意到在维基上
public void job() {
synchronized(this) {
if (jobInProgress) {
return;
}
// INSIDE LOCK, OUTSIDE IF
jobInProgress = true;
}
// Code to execute job goes here
// ...
}完全一样!
https://stackoverflow.com/questions/30458840
复制相似问题