A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨增坤 金牌黑马   /  2013-7-18 21:04  /  874 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

集合 vector是线程同步  ArrayList是线程不同步        Hashtable该集合是线程同步的,hashMap:是线程不同步的。
请问一下所说的集合是线程同步和不同步是怎样理解????
是不是可以这样理解:
当某一线程(线程A)中使用了 ArrayList集合,当线程A获得了执行权,
直到对使用的ArrayList操作完毕,才释放占有资源。在没有对ArrayList集合操作完毕的时候,线程不释放占有资源。




如果线程(线程B)使用了vector集合,在对vector集合操作的时候,同样也可以释放占有资源。




希望各位能给一些仔细的解释。


评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

3 个回复

倒序浏览
本帖最后由 冒烟的芒果 于 2013-7-18 21:34 编辑

vector, Hashtable是线程同步的,也可以说是线程安全的,就是说同一时刻只允许一个线程访问这个集合;
ArrayList,hashMap是线程不同步的,同一时刻可以有多个线程访问,是线程不安全的;
如果只有一个线程会访问到集合, 那最好是使用ArrayList,因为它不考虑线程安全,效率会高些。
如果有多个线程会访问到集合,那最好是使用 Vector,因为不需要我们自己再去考虑和编写线程安全的代码。
回复 使用道具 举报
可以这么理解:线程同步时谁拿到钥匙谁就有执行权,开完锁执行完毕后才释放锁,也就是说我拿了钥匙开门进来了直到我出来才能下一个拿钥匙进来;
              线程不同步就是单线程执行不需要钥匙,所以速度快,也就是开门进来不需要钥匙,跟着进来就行;
回复 使用道具 举报
谢谢大家的回复,我明白了!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马