0 0

java 线程同步 急求解答10

在多线程编程中,有一个队列(用linkedList实现),里面会有大量数据,先需要多线程进行快速访问,该怎么实现?

如列表{'a','b','c','d','e','f'}中,对每个元素都加上字符串‘q’,该怎么实现多线程顺序化访问并添加字符串?求实例简单代码

2014年8月13日 15:04

5个答案 按时间排序 按投票排序

0 0

采纳的答案

你要是做作业帮不了你,要是项目实际想解决问题就这么做:


ConcurrentLinkedDeque q = new ConcurrentLinkedDeque(你的LinkedList)


然后这个q就随便多线程玩了。线程安全的。
这个API需要Java7

如果你不用Java7,换成ConcurrentLinkedQueue 也差不多。这个需要Java5

你要是Java5都不用的话就自己同步了。

2014年8月13日 17:13
0 0

你可以在所有的线程访问你的list之前让他们去竞争获取一个锁对象,谁拿了锁,谁才可以操作,这样的锁对象很多,你再Juc框架里面就能找到!

2014年8月15日 08:47
0 0

感觉你的意思是多线程且分布式的处理这个队列呢,就是a线程处理一部分b线程处理另一部分。  而不是仅仅考虑线程安全问题呢。

2014年8月14日 10:59
0 0

ConcurrentLinkedDeque 有一个改进就是使用了乐观锁.

也就是只有真正发生冲突的时候,才需要想办法解决,而不是事先就锁住.这样自然就提高了并发度.

至于怎么解决冲突,简单的说,就是发现冲突之后,重新把想做的事情在做一遍,不会每次做什么都和别的线程冲突吧,总有成功的时候.

至于怎么检测冲突,简单点说,就是需要硬件(CPU)支持,详细情况可以参考下面的博文,不过是针对ConcurrentHashmap的.
http://flyfoxs.iteye.com/admin/blogs/2100120

2014年8月14日 10:01
0 0

1.5之后加入的那些ConcurrentXXXXX集合为什么说是线程安全的一直没怎么搞清楚,2个线程同时操作不用加锁也能保证数据正确?我觉得还是要在处理此集合的对方加入集合对象锁。不然还是不能保证数据完整性

2014年8月13日 23:11

相关推荐

Global site tag (gtag.js) - Google Analytics