www.1862.net > list线程安全问题

list线程安全问题

解决这个问题通常有两种方法(个人认为) 一:使用synchronized关键字,这个大家应该都很熟悉了,不解释了;二:使用Collections.synchronizedList();使用方法如下: 假如你创建的代码如下:List<Map<String,Object>> data=new

直接用vector就可以了,它是线程安全的.arraylist list=new arraylist();就需要锁了,涉及同步,可以参考网上买票例子做.

最通俗的解释就是:当多个线程同时操作一个类的时候,保证不出现数据错误问题,比如现在两个线程,一个先充值100,另一个消费50,假设原有的是100,那么最终的结果应该是150,如果出现线程安全问题的话,有可能第一个线程先读取到余额100,然后充值添加100, 此时另外一个线程读的也是100,但是减去50消费,这个时候,第一个线程准备写入数据,变成了200, 而第二个线程也写入数据,变成50,这个就是线程安全问题了 ArrayList是线程不安全的类,如果你想用线程安全的,可以用Vector

不安全是相对,多线程情况下,ArrayList没有进行加锁时候的操作!好比,一个线程正在存数据,还没存好,另外一个线程就进来取数据了,这就会导致数据错误!java集合工具提供了一个对集合进行打包加锁的工具,可以对集合进行加锁,使得集合变的安全!如果默认单线程情况,ArrayList是绝对安全的!

首先说一下什么是线程不安全:线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用.不会出现数据不一致或者数据污染.线程不安全就是

MSDN说了,List类就是线程安全的.但是,他只负责List的线程安全,不能负责List元素访问的线程安全.也就是说,他保证,对list进行元素的增加,删除什么的,是线程安全的.但对于其中的每个元素的内部信息,比如属性修改什么的,他就没有办法管了.

线程安全是指要控制多个线程对某个资源的有序访问或修改,而在这些线程之间没有产生冲突. 在java里,线程安全一般体现在两个方面: 1、多个thread对同一个java实例的访问(read和modify)不会相互干扰,它主要体现在关键字synchronized.

import java.util.ArrayList;import java.util.List;import org.apache.commons.lang3.ArrayUtils;public class Test_4 { /** * 多线程处理list * * @param data 数据list * @param threadNum 线程数 */ public synchronized void handleList(List data, int threadNum

如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码.如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的.比如一个ArrayList类,在添加一

人家问的list,线程安全的应该有Vector,CopyOnWriteArrayList

网站地图

All rights reserved Powered by www.1862.net

copyright ©right 2010-2021。
www.1862.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com