一、线程安全问题概述
1.线程安全问题是指:多个线程同时操作同一个变量,导致变量实际值与理论值不一致具体体现为:
a.如果是单个对象,可能出现变量实际值比理论值小(i++);
b.如果是集合对象,可能出现集合实际元素个数比理论元素个数少(ArrayList),可能出现集合内部出现死锁(java8之前的HashMap)
2.线程安全问题是在多线程情况下才会发生的问题,单线程不会产生线程安全问题;
3.产生线程安全问题一定是多个线程共同操作同一个变量造成的;
4.产生线程安全问题的代码的位置可称为临界代码,临界代码可能是一个语句,也可能是一个方法,分析、解决线程安全问题可以此为出发点;
二、为什么会线程不安全
关键字:共享变量、多线程、临界代码执行的随机性及不公平性