黑马程序员技术交流社区

标题: 这两个方法同步吗? [打印本页]

作者: ㄨ____陌生    时间: 2013-4-1 14:03
标题: 这两个方法同步吗?
    class Test
{
synchronized static void setX()
        {
      
        }   
      synchronized void getX()
           {

        }
}


作者: 黑马-郑玉元    时间: 2013-4-1 14:08
为什么不是同步的呢?用来修饰方法,方法就是同步的了!还有另外一种是同步代码块!
作者: 杜加璇    时间: 2013-4-1 14:56
同步 用synchronized来修饰俩个方法 这里个方法就是同步的
作者: 熊永标    时间: 2013-4-1 15:24
本帖最后由 熊永标 于 2013-4-1 15:39 编辑

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

如果有两个以上的线程调用setX()的话,这个方法会同步.因为这些线程使用的都是同一个同步锁.而对于getX()的话,如果线程在同一个实例中调用也会是线程同步.而setX和getX不会出现线程互诉的情况,这一点前面也提到了,因为他们不是同一个同步锁.
作者: 赵海洋    时间: 2013-4-1 15:32
一个静态一个非静态,代码执行时,直接创建setX方法,然后,然后才是建立对象啊,执行啊,调用啊神马的,把静态去掉这两个方法就是同步的。
作者: ㄨ____陌生    时间: 2013-4-1 16:14
熊永标 发表于 2013-4-1 15:24
这两个方法不会同步,差点把我给蒙了,因为setX()这个方法是静态的所以synchronized使用的是字节码对象达成同 ...

:lol、恩啊、不同步的




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