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

假设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才能保证线程安全性。

    评论

报告相同问题?