java中的Vector类
java中的Vector类与ArrayList类相似,都是实现动态数组的,但为什么说Vector类是同步的呢?小弟不懂,请各位高手帮忙一下,谢谢!...
java中的Vector类与ArrayList类相似,都是实现动态数组的,但为什么说Vector类是同步的呢?小弟不懂,请各位高手帮忙一下,谢谢!
展开
展开全部
你去看一下Vector的源码,会发现里边的方法全是synchronized修饰的,这就是说它能在多线程访问下保证数据的安全,线程只能以同步的方式来访问它,至于同步的概念,给你打个比方,下课了,你和你同学都去吃饭,结果他因为有些作业还没做完,想过会儿再去吃,这时候你可以有两个选择,如果你跟他很要好,那你可能不得不等他做完作业后再跟他一同去吃饭,这便是同步方式;当然,你也可以选择不管他什么时候去,你都立马去,这是异步方式。显然,对于你来说,后者的效率更高一点!Vector和ArrayList的区别也就在此,Vector因为采用线程同步方式(synchronized),所以安全性高一点,但效率较低,ArrayList则相反,具体应用场合得看需要,自己体会去吧,祝你成功!
展开全部
在java中的同步,是指多个线程在同时要访问某个对象、变量、方法、代码快等等时,保证只有唯一线程访问同步的对象(即用synchronized修为的内容)。
也可以这样理解:同步就是指保证在同一时刻只有一个线程访问同步对象的前提下,确保操作同步对象的线程顺序,跟他们发出访问同步对象请求时的顺序一致。
Vector是老版本jkd(1.0的时候就有)的一个集合类,因为Vector是同步的而ArrayList是非同步的,所以Vector的性能比ArrayList要差。
在不需要保证同步的情况下。尽量使用ArryList,在需要同步时,可以考虑用Vector(其实在需要同步的条件下,也同样不推荐用Vector,java中有个集合工具类Collections,它可以将一个ArrayList编程线程安全的)。
也可以这样理解:同步就是指保证在同一时刻只有一个线程访问同步对象的前提下,确保操作同步对象的线程顺序,跟他们发出访问同步对象请求时的顺序一致。
Vector是老版本jkd(1.0的时候就有)的一个集合类,因为Vector是同步的而ArrayList是非同步的,所以Vector的性能比ArrayList要差。
在不需要保证同步的情况下。尽量使用ArryList,在需要同步时,可以考虑用Vector(其实在需要同步的条件下,也同样不推荐用Vector,java中有个集合工具类Collections,它可以将一个ArrayList编程线程安全的)。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询