社区
Web 开发
帖子详情
请帮我解释一下,VECTOR和ARRAYLIST的同步和不同步的困惑!!
skyboy0720
2004-08-25 01:35:27
我在一封帖子看到这样的话,这封帖子是关于把数据库记录查询以后存在树组中的:
vctor可以很好解决同步问题
arrayList不能解决同步问题,需要自己写同步!
我真的有点不太明白,同步的概念,是什么意思,谁能形象的解释一下,万分感谢!!
...全文
414
13
打赏
收藏
请帮我解释一下,VECTOR和ARRAYLIST的同步和不同步的困惑!!
我在一封帖子看到这样的话,这封帖子是关于把数据库记录查询以后存在树组中的: vctor可以很好解决同步问题 arrayList不能解决同步问题,需要自己写同步! 我真的有点不太明白,同步的概念,是什么意思,谁能形象的解释一下,万分感谢!!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
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();
Java理论与实践:描绘线程安全性
本文定义了线程安全性,类要成为线程安全的,首先必须在单线程环境中有正确的行为。并在被多个线程访问时,不管运行时环境执行这些线程有什么样的时序安排,它必须有如上所述的正确行为,并且在调用的代码中没有任何额外的
同步
。其效果就是,在所有线程看来,对于线程安全对象的操作是以固定的、全局一致的顺序发生的。本文还介绍了线程的安全程度。描述线程安全性的分类方法:不可变、线程安全、有条件线程安全、线程兼容和线程对立。一个类的线程安全行为是其规格说明中的固有部分,应该成为其文档的一部分。
ArrayList
和
Vector
的区别
Vector
和
ArrayList
非常相似,两者都是用来表示可变数组,内部元素的存储都是通过数组来实现,可以随机的访问某个元素。 两者的主要区别是
Vector
的方法带有synchronized标志,各方法的访问是
同步
的,因此,
Vector
能够支持多线程,但是相应地效率比较低;
ArrayList
的方法没有synchronized标志,不是线程安全的。还有个比较小的差异是
Vector
在容量不够时,选择
Vector
简单学习(JDK1.8)
1. 概述 说到
Vector
,可能参加过面试,背过八股文的都知道
Vector
是
ArrayList
的、线程安全的替代类 具体来说,相对
ArrayList
,
Vector
使用synchronized关键字,实现了线程
同步
、保证了线程安全 但是,具体聊到
Vector
的细节,就不是很清楚了 还有,c++中也有
Vector
,具体有什么异同也不知道 ???? 本文将以
ArrayList
为基础,有对比地学习
Vector
1.1 类注释
Vector
的类注释,翻译如下:
Vector
是动态数组,支持随机访问,支持扩容和
ArrayList
&
Vector
的源码实现
#
ArrayList
&
Vector
#####前言: 本来按照计划,
ArrayList
和
Vector
是分开讲的,但是当我阅读了
ArrayList
和
Vector
的源码以后,我就改变了注意,把两个类合起来讲或许更加适合。为什么呢?我有几个理由。
ArrayList
和
Vector
都是List的实现类,他两处于同一个地位上的。他们所实现的功能大同小异,源码相似度90%以上。 他俩的区...
java
ArrayList
与
Vector
源码学习
Vector
和
ArrayList
非常相似,两者都是用来表示可变数组,内部元素的存储都是通过数组来实现,可以随机的访问某个元素。 两者的主要区别是
Vector
的方法带有synchronized标志,各方法的访问是
同步
的,因此,
Vector
能够支持多线程,但是相应地效率比较低;
ArrayList
的方法没有synchronized标志,不是线程安全的。还有个比较小的差异是
Vector
在容量不够时,选...
Web 开发
81,117
社区成员
341,741
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章