我在一个类中使用了一个变量size来表示 当前ArrayList元素个数,
程序是两个个线程同时取访问这个size分别添加和删除Arraylist中的元素。
问题出现在一个添加ArrayList的线程在size++的时候,就在没向下跑,(注:观察其他的线程也都没动静了)这是怎么回事。
请问和这个多线程同事访问size有关系吗??当这两个线程读取size时,会出现问题吗??谢谢!!望各位多指教,谢谢,谢谢!!!

解决方案 »

  1.   

    贴代码
    ArrayList不是线程安全的。
      

  2.   

    ArrayList不是线程安全的,应该在size方法前加上synchronized,防止2个或2个以上线程同时访问。
      

  3.   

    同步问题啦
    把ArrayList 改成 Hashtable 
      

  4.   

    应该是getTreeLock,ArrayList不是线程安全的。其实Java的Collections中就有线程的将ArrayList线程安全的方法,没有必要什么都去加synchronized,如果设计不好会起反作用的
      

  5.   

    Vectors是可同步化的,意思就是说,任何操作Vector的内容的方法都是线程安全的,相反的,另一方面,ArrayList是不可同步化的,所以也不是线程安全的。如果你知道了这些的话,你就会发现,Vector的同步会让它在性能发方面有一些小问题。所以,如果你不需要线程安全的话,那么就使用 ArrayList吧
      

  6.   

    Vector是同步的,线程安全的,而ArrayList是非同步的,不是线程安全的,由于线程会影响到性能,所以ArrayList比Vector开销更小,性能要好点
    当他们中的元素超过了他们的初始化容量大小的时候,Vector会将它的容量翻倍,而Arraylist只会增长50%的大小,这样Arraylist有利于节约内存的大小
    他们在使用上非常相视,都是表示一组数量可变的数组对象应用的集合,可以随机的访问他们的元素
      

  7.   

    ArrayList不是线程安全的,应该加上synchronized,防止死锁。或者改成HashTable
      

  8.   

    ArrayList不是线程安全的,应该加上synchronized,防止死锁。或者改成HashTable
      

  9.   

    ArrayList不是线程安全的,应该加上synchronized,防止死锁。或者改成HashTable
      

  10.   

    嗯, ArrayList不是线程安全的,应该加上synchronized