假设您有以下代码:

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/

10-10 14:24