黑马程序员技术交流社区

标题: synchronized疑问 [打印本页]

作者: 殷婷婷    时间: 2013-7-16 10:20
标题: synchronized疑问
本帖最后由 殷婷婷 于 2013-9-29 15:56 编辑

synchronized(MyLock.lockb)
    {
     System.out.println("if lockb");
    }
对于这个语句,我不加大括号的话,就编译出错。但是一般如果只有一个语句,不是不用加大括号的吗?
比如:
for(int x=0;x<20;x++) System.out.println(x);
是不是用到synchronized时,加大括号是必须的格式啊?

作者: wedge    时间: 2013-7-16 10:40
synchronized(lock){同步代码块},加大括号是必须的格式 。
作者: Jomes    时间: 2013-7-16 14:06
如果 if 只有一条语句的时候,sun公司为了方便,在数据结构里面添加了一种写法,java 虚拟机能过识别这种用法。这纯属是为了方便。但是可读性不好。    synchronized 不这么做有一定道理的,你想想,用同步代码块,不可能只有一条执行语句吧,如果只有一条的语句的话,那同步锁就没有意义了,那就没必要用synchronized。个人理解。
作者: xscn    时间: 2013-7-17 00:17
本帖最后由 xscn 于 2013-7-17 00:59 编辑

synchronized(syncObject) {
 允许访问控制的代码
}

synchronized 相当于是这样一个代码块,其中的代码必须获得对象 syncObject (可以是类实例或类)的锁方能执行。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2