tzkr.net
当前位置:首页 >> vECtor线程安全吗 >>

vECtor线程安全吗

Vector的所有操作方法都被同步了,既然被同步了,多个线程就不可能同时访问vector中的数据,只能一个一个地访问,所以不会出现数据混乱的情况,所以是线程安全的.如果不同步的话,对于同一个vector实例,如果第一个线程添加一个数据进去,第二个线程删除一个数据,你说最终结果是vector中有多少个数据?不能确定吧!这就是不同步的结果,所以在多线程下不能保证数据按照你的意思进行处理,也就是线程不安全的.

线程安全性不是一个非真即假的命题,vector 的方法都是同步的,并且 vector 明确地设计为在多线程环境中工作.但是它的线程安全性是有限制的,即在某些方法之间有状态依赖(类似地,如果在迭代过程中 vector 被其他线程修改,那么由 vector.iterator() 返回的 iterator会抛出concurrentmodifiicationexception) 以上是我在百度百科里面看到的一段话,就是stl当有两个线程对同一个容器进行写操作时就会以抛出异常的方式去阻止这种破坏安全性的操作行为

String是不可变类,所以是线程安全的 所有不可变类都是线程安全的,线程安全的类不一定是不可变类,如StringBuffer是可变类,靠锁实现线程安全

vector线程安全 ArrayList非线程安全,但却解约系统性能 比如一个 ArrayList 类,在添加一个元素的时候,它可能会有两步来完成:1. 在 Items[Size] 的位置存放此元素;2. 增大 Size 的值. 在单线程运行的情况下,如果 Size = 0,添加一个元素后

这个其实你理解什么时候应该需要加同步就好了,我的理解就是在多线程环境下需要修改共享数据的时候就需要进行同步管理. 现在你的问上说ArrayList在多线程的环境下是一个共享数据可能涉及到修改,那么就需要进行同步管理.多线程这个涉及到CPU的资源问题,真有点不好说.比如说现在有两个线程,b线程是进来在ArrayList查数据的a线程是修改数据的,现在a线程进来还没修改数据cpu资源就被线程b抢夺了,a线程处于等待状态,b线程进行了获取数据后a线程这是有了资源了就继续往下执行修改了数据.但是问题是b线程获取的数据并不是a线程修改后的数据.

就算是线程安全也会出现下标越界啊 线程安全的概念是 不会允许一个数在同时间内重复 操作导致 数据丢失或者篡改 数组下标越界跟线程安全是没有关系的

: hashtable, vector是线程安全的

Vector是synchronized,是线程安全的.

如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码.如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的. 比如一个 ArrayList 类,在添加一个元素

Vector叫做同步容器,java中所有的同步容器都属于过时的,比如HashTable,代替Vector的是CopyOnWriteArrayList类,叫做并发容器,java中所有并发容器都位于concurrent包下,Java中coucurrent包并发框架由JDK超级大神Doug Lea编写

网站首页 | 网站地图
All rights reserved Powered by www.tzkr.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com