2
void fun() {
    // some code
    synchronized (this) {
        if(condition) {
            return;
        }
        // some code
    }
    // some code
}

这个return调用是从方法返回fun还是从synchronized块中返回?

4

3 回答 3

3

return块内synchronized将首先释放所持有的监视器(this在您的示例中),然后退出该方法。

于 2012-12-21T10:02:35.620 回答
2

return 将退出您的函数。调用 return 总是退出一个函数。除了 try finally 在退出函数之前将执行 finally 块。

于 2012-12-21T09:59:21.477 回答
1
  1. 它只从函数 fun() 返回,任何块都没有任何 return 语句。for 循环块你可以有 break 但不能返回。
  2. 该块也没有返回类型,所以你怎么能从那里返回,所以只有你可以从函数返回值,因为它有返回类型。
于 2012-12-21T10:00:33.690 回答