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

请教ArrayList size 问题 ,望各位指教,谢谢!! 急


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

谢谢!!望各位多指教,谢谢,谢谢!!!

------解决方案--------------------
把代码贴上来看看。

死锁了?
------解决方案--------------------
贴代码
ArrayList不是线程安全的。
------解决方案--------------------
加上同步吧,可能是死锁了
------解决方案--------------------
ArrayList不是线程安全的,应该在size方法前加上synchronized,防止2个或2个以上线程同时访问。
------解决方案--------------------
同步问题啦
把ArrayList 改成 Hashtable
------解决方案--------------------
探讨
ArrayList不是线程安全的,应该在size方法前加上synchronized,防止2个或2个以上线程同时访问。

------解决方案--------------------
应该是getTreeLock,ArrayList不是线程安全的。

其实Java的Collections中就有线程的将ArrayList线程安全的方法,没有必要什么都去加synchronized,如果设计不好会起反作用的
------解决方案--------------------
贴代码看下
------解决方案--------------------
Vectors是可同步化的,意思就是说,任何操作Vector的内容的方法都是线程安全的,相反的,另一方面,ArrayList是不可同步化的,所以也不是线程安全的。如果你知道了这些的话,你就会发现,Vector的同步会让它在性能发方面有一些小问题。所以,如果你不需要线程安全的话,那么就使用 ArrayList吧
------解决方案--------------------
同步!
------解决方案--------------------
Vector是同步的,线程安全的,而ArrayList是非同步的,不是线程安全的,由于线程会影响到性能,所以ArrayList比Vector开销更小,性能要好点
当他们中的元素超过了他们的初始化容量大小的时候,Vector会将它的容量翻倍,而Arraylist只会增长50%的大小,这样Arraylist有利于节约内存的大小
他们在使用上非常相视,都是表示一组数量可变的数组对象应用的集合,可以随机的访问他们的元素

------解决方案--------------------
ArrayList不是线程安全的,应该加上synchronized,防止死锁。或者改成HashTable
------解决方案--------------------
ArrayList不是线程安全的,应该加上synchronized,防止死锁。或者改成HashTable
------解决方案--------------------
ArrayList不是线程安全的,应该加上synchronized,防止死锁。或者改成HashTable
------解决方案--------------------
探讨
应该是getTreeLock,ArrayList不是线程安全的。

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

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

------解决方案--------------------
我也觉得应该用Vector
------解决方案--------------------
不管是不是同步问题,你修改共享资源的时候就必须考虑同步的问题,具体怎么解决就看怎么效率高点了