请帮我解释一下,VECTOR和ARRAYLIST的同步和不同步的困惑!!

skyboy0720 2004-08-25 01:35:27
我在一封帖子看到这样的话,这封帖子是关于把数据库记录查询以后存在树组中的:

vctor可以很好解决同步问题
arrayList不能解决同步问题,需要自己写同步!


我真的有点不太明白,同步的概念,是什么意思,谁能形象的解释一下,万分感谢!!
...全文
316 点赞 收藏 13
写回复
13 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
zhouysh 2004-08-25
to
回复人: kingfish(八百里秦川@龙城异客) ( ) 信誉:100 2004-08-25 15:12:00 得分: 0


to zhouysh
同步也就是使多个线程同步

用来协调各个线程对指定资源的访问(通常是保证线程对资源的独占性访问)。

如果只有一个线程,也就没必要使用synchronized,用了也没错,就是会降低点效率


=============================================================================

哦, 你这里说的同步 应该跟我在"操作系统课"上学的各个"线程同时运行"是一个道理吗???
也就是说多个用户同时访问数据库中的一张表 就会出现 你说说的同步问题 对吗???
这个时候 我们在写程序中就必须要用到VECTOR ,而不能用ArrayList???但是不对啊
我在公司写的程序都是用ArrayList
晕了 完全不懂这一块
555555555555555555555555555
回复
skyboy0720 2004-08-25
谢谢,能理解了,可能不能理解的是,对JAVA线程的深入了解吧!!!
回复
kingfish 2004-08-25
to zhouysh
同步也就是使多个线程同步

用来协调各个线程对指定资源的访问(通常是保证线程对资源的独占性访问)。

如果只有一个线程,也就没必要使用synchronized,用了也没错,就是会降低点效率
回复
zhouysh 2004-08-25
to
回复人: boykent(一路狂飙) ( ) 信誉:97 2004-08-25 14:59:00 得分: 0


http://dev.csdn.net/develop/article/22/22749.shtm
看看这篇文章,也许会给你点帮助.

===============================================================

同步性
Vector是同步的。这个类中的一些方法保证了Vector中的对象是线程安全的。而ArrayList则是异步的,因此ArrayList中的对象并不是线程安全的。因为同步的要求会影响执行的效率,所以如果你不需要线程安全的集合那么使用ArrayList是一个很好的选择,这样可以避免由于同步带来的不必要的性能开销。

这部分不明白```能不能把什么是"同步"解释一下啊 大哥````
回复
boykent 2004-08-25
http://dev.csdn.net/develop/article/22/22749.shtm
看看这篇文章,也许会给你点帮助.
回复
eureka0891 2004-08-25
也不是,
如果不是多线程往ArrayList里插入,更新是用不着考虑同步的!
否则就要用synchronized了
回复
zhouysh 2004-08-25
回复人: kingfish(八百里秦川@龙城异客) ( ) 信誉:100 2004-08-25 13:50:00 得分: 0


ArrayList中:
public boolean add(Object o) {
...
}

vector中:
public synchronized void addElement(Object obj){
...
}

synchronized意思简单说就是
lock();
add();
unlock();

============================================================

严重关注,我对JDK中这部分什么同步不同步不理解, 请高手再说明白点

这里
lock();
add();
unlock();
是不是跟线程有关系???
回复
skyboy0720 2004-08-25
按照这样的理解,那如果只是数据查询,用VECTOR就可以了,数据的更新和插入就用ARRAYLIST????

是这样么!
回复
skyboy0720 2004-08-25
谢谢,能否说说一点实际经验,举个实际例子!
回复
wubai250 2004-08-25

呵呵,说的很清楚,表扬!
回复
kingfish 2004-08-25
同步是以牺牲效率为代价的

不需要同步的地方当然用ArrayList

回复
skyboy0720 2004-08-25
既然这样,为什么我看了一些帖子,都建议用ArrayList呢?!
反而不用VECTOR,在数据库这方面
回复
kingfish 2004-08-25
ArrayList中:
public boolean add(Object o) {
...
}

vector中:
public synchronized void addElement(Object obj){
...
}

synchronized意思简单说就是
lock();
add();
unlock();
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2004-08-25 01:35
社区公告
暂无公告