【转载】Java容器的线程安全
来源:互联网 发布:玩游戏的时候网络优先 编辑:程序博客网 时间:2024/05/16 08:27
线程安全:多个线程操作容器的时候,互相之间不会带来意想不到的影响;
有些容器是线程安全的(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
- 【转载】Java容器的线程安全
- java 的容器线程安全
- Java容器的线程安全
- java容器的线程安全
- java容器的线程安全
- Java的容器的线程安全
- java线程安全的容器类
- java线程安全的容器有哪些?
- Java线程安全的容器与介绍
- 使STL容器线程安全的类(转载)
- 容器的线程安全
- Java多线程之~~~线程安全容器的非阻塞容器
- STL容器的线程安全?
- 基于Java容器类的线程安全编程
- 基于Java容器类的线程安全编程
- Java并发:线程安全的容器:同步和并发
- Java中容器类的线程安全与否问题
- java线程安全的单例模式(转载)
- Linux串口编程
- 有关于HMAX的资料2
- Android SQLite数据库版本升级原理解析
- WHU-Problem 1004 - Noah's Ark
- Mac OS-Android studio was unable to find a valid JVM解决办法
- 【转载】Java容器的线程安全
- 微信广告狂欢中的 笑与怒
- JMS五种消息的发送/接收的例子
- oracle
- top和union的结合
- 使用html5 canvas绘制图片
- 三步搞定Spring3.0 quartz 定时器执行定时任务
- C和C++哪个更快?
- codeforces 235B Let's Play Osu! 概率dp