1.造成线程不安全的常见5点因素
2.如何解决线程不安全
线程不安全,就是在多线程运行的结束后,结果或者过程并不按照我们预期的那样执行,则为线程不安全,即产生了BUG
出现以下5种情况,一般都会造成线程不安全
1.抢占式执行
2.两个线程修改同一个变量
3.修改的操作不是原子的
4.内存可见性问题
5.指令重排序
举一个线程不安全的代码例子
定义一个count变量,让它从0自增到10w,创建两个线程,每个线程自增5w次,按照这个逻辑,count可以自增到10w吗?
//定义Counter类,让count自增10w次
class Counter{
public int count;
public void increase(){
count++;
}
}
public class Demo1 {
//实例化Counter对象
public static Counter counter = new Counter();
public static void main(String[] args) throws InterruptedException {
Thread thread1 = new Thread(() -> {
for (int i = 0; i < 50000; i++){