A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 殷婷婷 中级黑马   /  2013-7-16 10:20  /  2246 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 殷婷婷 于 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时,加大括号是必须的格式啊?

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 神马都是浮云

查看全部评分

3 个回复

倒序浏览
synchronized(lock){同步代码块},加大括号是必须的格式 。
回复 使用道具 举报
如果 if 只有一条语句的时候,sun公司为了方便,在数据结构里面添加了一种写法,java 虚拟机能过识别这种用法。这纯属是为了方便。但是可读性不好。    synchronized 不这么做有一定道理的,你想想,用同步代码块,不可能只有一条执行语句吧,如果只有一条的语句的话,那同步锁就没有意义了,那就没必要用synchronized。个人理解。

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 赞一个!

查看全部评分

回复 使用道具 举报 1 0
本帖最后由 xscn 于 2013-7-17 00:59 编辑

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

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

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马