使用JUC并发编程内部的容器--->内部已经实现好了锁定
package iostudy.synchro;
import java.util.ArrayList;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.List;
/**
* 线程安全:操作JUC并发编程的容器
* @since JDK 1.8
* @date 2021/6/18
* @author Lucifer
*/
public class SynContainer {
public static void main(String[] args) throws InterruptedException{
/*保证的是工作内存和主内存相互写的过程中保证数据安全*/
CopyOnWriteArrayList<String> list = new CopyOnWriteArrayList<String>();
for (int i=0; i<10000; i++){
new Thread(() -> {
list.add(Thread.currentThread().getName());
}).start();
}
/*线程等待*/
Thread.sleep(10000);
/*打印内容*/
System.out.println(list.size());
}
}
/*
源码中这个CopyOnWriteArrayList类一开始就拿到了可重入锁
可重入锁:
a方法拿到了数据锁可以带入b方法中使用
属于高级并发编程,后期肯定会使用到的一个容器
*/