日期:2014-05-20  浏览次数:20673 次

关于类静态属性的并发问题
Java code
class Test {
   
    private static List list=new ArrayList();

    public static List getList(){
      return list;
    }

}


如果我多个线程调用getList()方法,是否会出现同步互斥问题?即静态属性list是否是只有一个的?那它的生命周期又是怎样的呢?

------解决方案--------------------
静态属性只在类加载的时候初始化一次,且仅此一次
------解决方案--------------------
需要考虑线程安全的问题的,静态的对象对于多个线程是共享的
------解决方案--------------------
探讨
引用:
需要考虑线程安全的问题的,静态的对象对于多个线程是共享的

那你知道它的生命周期是什么吗?难道类不被回收它就一直存在嘛?貌似这个方式共享数据蛮不错的。

------解决方案--------------------
Java code

class Test {
    private static List list=Collections.synchronizedList(new ArrayList());
    public static List getList(){
      return list;
    }

}