黑马程序员技术交流社区
标题:
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