论坛首页 Java企业应用论坛

Vector和ArrayList的本质区别到底是什么?

浏览 33310 次
精华帖 (0) :: 良好帖 (5) :: 新手帖 (6) :: 隐藏帖 (1)
作者 正文
   发表时间:2011-02-25   最后修改:2011-02-25
我觉得你应该说Vector所有的方法是“原子”的,我其实是没懂你脑子里面的“线程安全”怎么定义的...
引用

还没太懂,同步和线程安全是两个不同的概念...

多线程同时直接操作一个Vector,做add操作。不会有报错。
1000个add后,vector里就有1000个数据。

多线程同时直接操作一个ArrayList,做add操作。有可能报错,也有可能出现数据被重写掉。
1000个add后,vector里只有999个数据。或者执行期间有index异常。

Vecotr的所有方法都是线程安全的。ArrayList不是。

我不知道你哪儿不懂。


0 请登录后投票
   发表时间:2011-02-25  
原子和线程安全的区别是什么,你说来听听。
0 请登录后投票
   发表时间:2011-02-25  
ironsabre 写道
原子和线程安全的区别是什么,你说来听听。

嘿嘿,原子的肯定是线程安全的。
线程安全的不一定是原子的。

囧死了,我在说废话~~~~
0 请登录后投票
   发表时间:2011-02-25   最后修改:2011-02-25
NanguoCoffee 写道
ironsabre 写道
原子和线程安全的区别是什么,你说来听听。

嘿嘿,原子的肯定是线程安全的。
线程安全的不一定是原子的。

囧死了,我在说废话~~~~

你可以说不是非要数据库才会有事务.....
不是非要hibernate才会有乐观锁
0 请登录后投票
   发表时间:2011-02-25  
抛出异常的爱 写道
NanguoCoffee 写道
ironsabre 写道
原子和线程安全的区别是什么,你说来听听。

嘿嘿,原子的肯定是线程安全的。
线程安全的不一定是原子的。

囧死了,我在说废话~~~~

你可以说不是非要数据库才会有事务.....
不是非要hibernate才会有乐观锁

一个是制定的规范,一个是根据这个规范的一种实现?
0 请登录后投票
   发表时间:2011-02-26  
长见识了,以前确实只知道同步
0 请登录后投票
   发表时间:2011-02-26  
ironsabre 写道
原子和线程安全的区别是什么,你说来听听。

http://en.wikipedia.org/wiki/Thread_safe
http://en.wikipedia.org/wiki/Atomicity_(programming)

if (!vector.contains(element))
    vector.add(element);


这种存在race condition,同步,不安全
0 请登录后投票
   发表时间:2011-02-28   最后修改:2011-02-28
NanguoCoffee 写道
ironsabre 写道
原子和线程安全的区别是什么,你说来听听。

嘿嘿,原子的肯定是线程安全的。
线程安全的不一定是原子的。

囧死了,我在说废话~~~~


你能举例说明吗。
我觉得你说的不对,你举出例子来我应该可以反驳你。
0 请登录后投票
   发表时间:2011-02-28   最后修改:2011-02-28
ironsabre 写道
NanguoCoffee 写道
ironsabre 写道
原子和线程安全的区别是什么,你说来听听。

嘿嘿,原子的肯定是线程安全的。
线程安全的不一定是原子的。

囧死了,我在说废话~~~~


你能举例说明吗。
我觉得你说的不对,你举出例子来我应该可以反驳你。


”原子的肯定是线程安全的“ 这句话就不用举例。

“线程安全的不一定是原子的”的例子:
String对象,Date对象,Integer, Double....
这些类貌似有一种叫法:不可变类
0 请登录后投票
   发表时间:2011-02-28  
我要先查一下。
但你的说法跟haigui.chen关于原子的说法是不一样的。
不明白为什么可以说到一起。

haigui.chen说道:我觉得你应该说Vector所有的方法是“原子”的,我其实是没懂你脑子里面的“线程安全”怎么定义的..
这句话明显应该是错的吧。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics