首页 > 试题广场 >

有以下代码段pulbicclassSomething{pub

[不定项选择题]
有以下代码段
pulbic class Something {
    public synchronized void syncA(){}
    public synchronized void syncB(){}
    public static synchronized void sSyncA(){}
    public static synchronized void sSyncB(){}
}
假设类test有两个对象分别为x和y,下面4组表达式可以同时获取锁的是()?
  • x.syncA()与x.syncB()
  • x.syncA()与y.syncB()
  • x.sSyncA()与y.sSyncB()
  • x.sSyncA()与test.sSyncA()

synchronized关键字

  • 修饰实例方法,对当前实例对象this加锁
  • 修饰静态方法,对当前类的Class对象加锁

  • 修饰代码块,指定一个加锁的对象,给对象加锁
根据上面三条可以去掉AC,D的话我觉得是可重入锁。
故选B、D
编辑于 2021-06-28 22:14:34 回复(0)

x.isSyncA()与x.isSyncB()

不能同时访问,因为都是访问对象x的同步锁

x.isSyncA()与y.isSyncA()

可以同时访问,因为是访问不同对象(x和y)的同步锁

x.sSyncA()与y.sSyncB()

不能同时访问,因为两个方法是静态的,相当于用Something.cSyncA()和Something.cSyncB()访问,是相同的对象

x.sSyncA()与Something.sSyncA()

可以同时访问,因为访问的对象不同

编辑于 2021-07-14 17:52:21 回复(0)