java 容器 线程_JAVA多线程并发容器
1、ArrayList線程不安全;CopyOnWriteArrayList線程安全
package concurrent;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
/**
* Auth: zhouhongliang
* Date:2019/8/1
* CopyOnWriteArrayList 替代 ArrayList
*/
public class CopyOnWriteArrayListDemo {
public static void main(String[] args) {
List list = new CopyOnWriteArrayList<>();
//List list = new CopyOnWriteArrayList<>();
for (int i=0;i<1000;i++){
list.add(i);
}
Iterator iterator = list.iterator();
while(iterator.hasNext()){
list.remove(iterator.next());
}
System.out.println(list);
}
}
2、HashMap線程不安全;HashTable synchronize線程安全、```
ConcurrentHashMap采用”分段鎖”線程安全;
package concurrent;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
Auth: zhouhongliang
Date:2019/8/1*/public class ConcurrentHashMapDemo {public static void main(String[] args) throws InterruptedException {Map map = new HashMap();//線程不安全//Map map = new Hashtable();//線程安全//Map map = new ConcurrentHashMap();//線程安全ExecutorService executorService = Executors.newCachedThreadPool();CountDownLatch countDownLatch = new CountDownLatch(10000);for (int i=0;i<10000;i++){final Integer index = i;executorService.execute(()->{map.put(index,index);countDownLatch.countDown();});}countDownLatch.await();System.out.println(map.size());}}
總結
以上是生活随笔為你收集整理的java 容器 线程_JAVA多线程并发容器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 字节的复制_JAVA中字节流复
- 下一篇: 函数对象 java_函数对象