/**
* 出现有些没加入list的原因:线程一拿走了这个list当时里面有10个数据,添加一个变成11个
* 线程二同时拿走了这个list,当时里面有10个数据,添加一个变成11个(但是正常应该是12个,也就是线程1添加的那个数据没有了)
*/
public class Ticket implements Runnable{
private List<String> list = new ArrayList<>();
public void run(){
for(int i=0;i<300;i++){
try {
// 调用Thread类的sleep方法,休眠50ms,由于父接口没有throws异常,so我们只能用try...catch
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
list.add("xxx,");
System.out.println(list.size());
}
}
}
结论:多线程操作同一个全局变量,加上线程锁吧