对list的线程不安全操作
来源:互联网 发布:淘宝账号 卖家 买家 编辑:程序博客网 时间:2024/06/05 03:11
对一个线程不安全的集合进行多线程操作, 并不会破单个元素的完整性, 根据java内存模型可知,
public class TestCl {List<Integer> no = Collections.synchronizedList(new ArrayList<>());//List<Integer> no = new ArrayList<>();public static void main(String[] args) throws InterruptedException {TestCl t = new TestCl();for(int i=0;i<10000;i++) {new Thread(t.new InnerThread(i)).start();}TimeUnit.SECONDS.sleep(10);System.out.println(t.no.size());}public class InnerThread implements Runnable{Integer i;public InnerThread (Integer i) {this.i = i;}@Overridepublic void run() {// TODO Auto-generated method stubno.add(i);}}}
对于同步的list, 输出结果是10000
public class TestCl {//List<Integer> no = Collections.synchronizedList(new ArrayList<>());List<Integer> no = new ArrayList<>();public static void main(String[] args) throws InterruptedException {TestCl t = new TestCl();for(int i=0;i<10000;i++) {new Thread(t.new InnerThread(i)).start();}TimeUnit.SECONDS.sleep(10);System.out.println(t.no.size());}public class InnerThread implements Runnable{Integer i;public InnerThread (Integer i) {this.i = i;}@Overridepublic void run() {// TODO Auto-generated method stubno.add(i);}}}
public boolean add(E e) { ensureCapacityInternal(size + 1); // Increments modCount!! elementData[size++] = e; return true; }
阅读全文
0 0
- 对list的线程不安全操作
- 对Java线程安全与不安全的理解
- 线程不安全的类型
- Servlet线程的不安全
- 线程不安全的情况
- 线程不安全的ArrayList
- 对List的操作
- 线程同步的小例子(两个线程对一个List进行写操作)
- 一个“线程不安全”的例子
- 包装线程不安全的集合
- 线程安全/不安全的讨论
- HashMap的线程不安全体现
- ArrayList的线程不安全问题
- 线程不安全的实体Bean
- 线程不安全的应对措施
- java--线程不安全的类
- java 对list的操作
- 线程安全与线程不安全的区别
- 一种排序(set集合 结构体的应用)
- VM虚拟机设置Linux(Centos6.9)配置NAT连接
- OpenAPI Specification
- 如何从MongoDB迁移到MySQL?这有现成经验!
- TCP/IP(一)
- 对list的线程不安全操作
- 一个Java程序员收藏的网站
- AlexNet 网络详解及Tensorflow实现源码
- 从事大数据征信行业,你必须知道这些
- 大数据前景分析:Hadoop将被Spark替代?
- 「大数据」这词不火了 是不是因为没当年说的那么大
- 查看 csdn我的收藏
- mac电脑安装 python3.0以上版本
- 常犯的六个错误,你知道吗?