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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ㄨ____陌生 中级黑马   /  2013-4-1 14:03  /  1368 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

    class Test
{
synchronized static void setX()
        {
      
        }   
      synchronized void getX()
           {

        }
}

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1 新人加油~

查看全部评分

5 个回复

倒序浏览
为什么不是同步的呢?用来修饰方法,方法就是同步的了!还有另外一种是同步代码块!
回复 使用道具 举报
同步 用synchronized来修饰俩个方法 这里个方法就是同步的
回复 使用道具 举报
本帖最后由 熊永标 于 2013-4-1 15:39 编辑

这两个方法不会同步,差点把我给蒙了,因为setX()这个方法是静态的所以synchronized使用的是字节码对象达成同步.而getX不是静态的,使用的是this达成同步,他们的同步锁都不一样,怎么会同步呢!!!!
这道题出得真不错,呵呵!!!!{:soso_e114:}

如果有两个以上的线程调用setX()的话,这个方法会同步.因为这些线程使用的都是同一个同步锁.而对于getX()的话,如果线程在同一个实例中调用也会是线程同步.而setX和getX不会出现线程互诉的情况,这一点前面也提到了,因为他们不是同一个同步锁.

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
一个静态一个非静态,代码执行时,直接创建setX方法,然后,然后才是建立对象啊,执行啊,调用啊神马的,把静态去掉这两个方法就是同步的。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
熊永标 发表于 2013-4-1 15:24
这两个方法不会同步,差点把我给蒙了,因为setX()这个方法是静态的所以synchronized使用的是字节码对象达成同 ...

:lol、恩啊、不同步的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马