zoukankan      html  css  js  c++  java
  • 5. CopyOnWriteArrayList 的适用场景

    package com.gf.demo04;
    
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Iterator;
    import java.util.List;
    import java.util.concurrent.CopyOnWriteArrayList;
    
    /**
     * CopyOnWriteArrayList/CopyOnWriteArrySet : “写入并复制”
     * 注意 : 添加操作多时,效率低,因为每次添加都会进行复制,开销很大。并发迭代操作多时可以选择。
     */
    public class TestCopyOnWriteArrayList {
    	
    	public static void main(String[] args) {
    		HelloThead ht = new HelloThead();
    		
    		for (int i = 0; i < 10; i++) {
    			new Thread(ht).start();
    		}
    	}
    
    }
    
    class HelloThead implements Runnable{
    	
    	//private static List<String> list = Collections.synchronizedList(new ArrayList<String>());//存在ConcurrentModificationException : 并发修改异常 
    	
    	private static CopyOnWriteArrayList<String> list = new CopyOnWriteArrayList<String>();
     	
    	static{
    		list.add("AA");
    		list.add("BB");
    		list.add("CC");
    	}
    
    	@Override
    	public void run() {
    		Iterator<String> it = list.iterator();
    		
    		while (it.hasNext()) {
    			System.out.println(it.next());
    			list.add("AA");
    		}
    	}
    	
    }
    

    关注我的公众号,精彩内容不能错过

  • 相关阅读:
    openresty 使用 log_by_lua 发送日志到 syslog-ng
    uuid 了解
    基于openresty 的几个开发框架
    openresty 几个插件使用
    kong 了解
    openresty && hashids&& redis 生成短链接
    kong k8s 安装 以及可视化管理界面
    hashids 了解
    Apache Tez 了解
    Cascalog了解
  • 原文地址:https://www.cnblogs.com/huanchupkblog/p/8037698.html
Copyright © 2011-2022 走看看