黑马程序员技术交流社区
标题:
这两个方法同步吗?
[打印本页]
作者:
ㄨ____陌生
时间:
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