线程安全Collections.synchronizedList
来源:互联网 发布:强强软件 编辑:程序博客网 时间:2024/05/01 13:24
线程安全:多个线程操作容器的时候,互相之间不会带来意想不到的影响;
有些容器是线程安全的(Vector,ConcurrentLinkedQueue等),有些则不是(list等),利用类似 private static List<Task> taskQueue = Collections.synchronizedList(new LinkedList<Task>());的方法可以得到本身不是线程安全的容易的线程安全的状态,但是要注意的是线程安全仅仅指的是如果直接使用它提供的函数,比如:queue.add(obj);
但如果是非原子操作,比如:
我们很难保证,在调用了isEmpty()之后,poll()之前,这个queue没有被其他线程修改。
所以对于这种情况,我们还是需要自己同步:
对于Collections.synchronizedList(new LinkedList<Task>()),
在返回的列表上进行迭代时,用户必须手工在返回的列表上进行同步:
List list = Collections.synchronizedList(new ArrayList()); ... synchronized(list) { Iterator i = list.iterator(); // Must be in synchronized block while (i.hasNext()) foo(i.next()); }
不遵从此建议将导致无法确定的行为。
0 0
- 线程安全Collections.synchronizedList
- 线程安全Collections.synchronizedList
- 线程安全Collections.synchronizedList
- 线程安全Collections.synchronizedList
- 线程安全Collections.synchronizedList
- 线程安全之Collections.synchronizedList
- 线程安全之Collections.synchronizedList
- 线程安全的Collections.synchronizedList
- 线程安全类--Collections.synchronizedList()
- Java基础之集合框架--Collections.synchronizedList() 线程安全的List
- Collections.synchronizedList
- Collections.synchronizedList
- Collections.synchronizedList
- Collections.synchronizedList 初次使用
- Collections.synchronizedList 工厂方法
- Collections分析之SynchronizedList
- Collections.synchronizedList(list)
- Collections.synchronizedList()方法
- ArcGIS与*.dem
- freemaker简单实用
- SRM 600 DIV2
- java小白日记1--http请求添加Authorization验证
- Android开发心得-ListView的监听事件
- 线程安全Collections.synchronizedList
- java的InputStream和InputStreamReader有什么区别??
- 【Gson】【2】Gson使用演示
- 在线编程学习网站大搜罗
- oracle 一致性读
- STL泛型编程-bitset位集合容器
- 第一天:jquery发布框
- android Task Activity launchMode="singleTask" singleInstance 代码分析
- axis1.4生成代码调用Webservice(备忘)