假设您有以下代码:
public int getSpeedX() {
speedLock.lock();
try {
return speedX;
} finally {
speedLock.unlock();
}
}
public void setSpeedX(int x) {
speedLock.lock();
try {
speedX = x;
} finally {
speedLock.unlock();
}
}
返回速度X正常吗?或者应该是:
public int getSpeedX() {
int temp;
speedLock.lock();
try {
temp = speedX;
} finally {
speedLock.unlock();
}
return temp;
}
哪个是对的?或者它们是等价的?
最佳答案
它们是等价的。 finally
块中的任何内容都会被执行,无论块如何退出(例如,流控制底部、返回语句或异常)。
关于java - ReentrantLock 同步 getter 和 setter,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8128685/