【问题标题】:return statement in synchronized in android does?在android中同步的return语句呢?
【发布时间】:2012-12-08 21:30:03
【问题描述】:
void fun() {
    // some code
    synchronized (this) {
        if(condition) {
            return;
        }
        // some code
    }
    // some code
}

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

【问题讨论】:

  • 查看同步块的右大括号。你会得到答案。 :p
  • 返回总是退出方法。尝试在同步块中的 return 语句(不带 if)之后放置一些东西,它甚至不会因为无法访问的语句而编译。
  • 这是一个巨大的代码,即使我输入日志也无法获取:(

标签: android synchronization synchronized


【解决方案1】:

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

【讨论】:

    【解决方案2】:
    1. 它只从函数 fun() 返回,任何块都没有任何 return 语句。for 循环块可以有 break 但不能返回。
    2. 此外,该块没有返回类型,那么您如何从那里返回,所以只有您可以从函数返回值,因为它具有返回类型。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 另请注意,在这种情况下:是的,return 语句将结束方法位,它还将释放同步块中获取的锁。
      猜你喜欢
      • 2014-02-28
      • 1970-01-01
      • 2017-11-04
      • 2014-02-02
      • 1970-01-01
      • 2016-12-29
      • 2017-02-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多