哎呀好气啊 2017-12-20 03:14 采纳率: 0%
浏览 3739
已结题

假设test类运行于多线程环境下,那么关于A处的同步下面描述正确的是,求详细的解释

 public class Test {
  List list= new java.util.ArrayList();
  public void test() {
    synchronized ( list) { // --A
      list.add( String.valueOf(System.currentTimeMillis()));
    }
  }
}

A. test方法中必须增加synchronized
B. Test类为singleton时有必要增加synchronized
C. test方法中没有必要增加synchronized
D. Test类为singleton时也没有必要增加synchronized

  • 写回答

9条回答 默认 最新

  • IT•軒轅 企业官方账号 2017-12-20 05:59
    关注

    答案就是B
    A 如果Test类不是单例的话,那么list就是多个Test类里的多个实例list,所以加不加synchronized都是非线程安全的
    B 对的,单例Test时,保证list也是唯一的实例对象,多线程访问test方法时,共同抢夺list这把对象监视锁。
    C 与A解释相似,有没有必要看是否Test类是否单例
    D 单例时,必要加上synchronized才能保证线程安全性。

    评论

报告相同问题?

悬赏问题

  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置