Ant*_*tiz 2 java synchronized synchronized-block
这段代码不会编译:
synchronized( obj ) {
Object a = new Object()
}
System.out.println( a.toString() );
Run Code Online (Sandbox Code Playgroud)
但我不知道为什么..我的理解是同步块总是最终被执行,所以我希望在synchronized块之后的代码能够知道任何新的声明变量.我哪里错了?
这不是同步,而是{}符号.他们定义范围,无论是否有一个if,for,synchronized,甚至没有在他们的开始.因此,a一旦块完成,它就会超出范围,因为它是在它内部声明的.(在Object a声明结尾处还有一个缺少的分号,但我怀疑你只是忘了复制它.)
| 归档时间: |
|
| 查看次数: |
390 次 |
| 最近记录: |