package com.kuang.thread.syn;
import java.util.ArrayList;
import java.util.List;
/**
* @ClassName UnsafeList
* @Description 三大不安全案例:线程不安全的集合
* @Author 麻虾
* @Date 2021/5/31 16:36 36
* @Version 1.0
*/
public class UnsafeList {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
for (int i = 0; i < 10000; i++) {
//lamda表达式
new Thread(()->{
synchronized (list){
list.add(Thread.currentThread().getName());
}
}).start();
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(list.size());
}
}
同步块后结果:
10000
Process finished with exit code 0
未加之前的异常结果:
9998
Process finished with exit code 0
9984
Process finished with exit code 0