一直没感受到,他们到底给我带来什么利弊.拿List下面的两个子类作比较:ArrayList与Vector,其
中ArrayList是非线程安全,Vector是线程安全的.但什么时候用ArrayList,什么时候用Vector我真不清楚.
希望CSDN上的朋友给我一个好的答案,有例子举证就最好了.
中ArrayList是非线程安全,Vector是线程安全的.但什么时候用ArrayList,什么时候用Vector我真不清楚.
希望CSDN上的朋友给我一个好的答案,有例子举证就最好了.
调试欢乐多
1、如果List不会被多线程并发访问,使用ArrayList就没有问题;
2、如果有多线程并发访问List,可以使用Vector,也可以使用ArrayList,并且自己对可能出现并发冲突的地方自行做synchronized处理。
同意,不是在线程里用的话,就用arrayList,速度快
而同一个vector,A线程在访问的时候,B线程不能访问而挂起,等A释放对vector的锁以后B再访问。
所以ArrayList有可能出现这样的情况:线程A,B同时访问ArrayList C
他们都读出C的第五个元素是1000(假设第五个元素是表示5仓库的库存),这时候A线程因为其他原因挂起了,而B还在执行那么B线程显示还有1000个存货,B根据他卖出的货量修改第五个元素为:1000-200=800.这时候A线程回来了,他也开始继续执行,他也卖出100个货物,他开始修改,结果他修改为1000-100=900.这时候就出现问题了,实际只有700货,显示的却是900而vector不会,A访问的时候显示1000,B再来访问就不能访问,当A修改完毕后,B才能访问,显示为800,这样就不会出现问题
线程安全就是在多线程环境下也不会出现数据不一致,而非线程安全就有肯能出现数据不一致
线程安全的类由于要确保线程安全增加了一定的开销,所以在单线程环境中效率没非线程安全的类效率高
http://www.diybl.com/course/4_webprogram/jsp/jsp_js/20090304/157682.html
但我想说一句我的观点:在WEB项目开发中,我们需要同步的是操作数据库的那个方法,Vector同步确实没发现他
存在的必要.
试问我们除了做练习外,我还真没用到Vector做过数据同步.希望CSDN兄弟继续指点.
至于你说的WEB项目,如果你用hibernate,你也会要用啊,因为他里面有个状态不是叫持久态,修改Vector就修改数据库了。
不过在做过的项目中,确实很少用到Vector,我还是在见到楼主的文章后才知道有这么回事。当然我做过的都是小项目。
ArrayList是非线程安全的,Vector是线程安全的。