线程安全问题的发现与解决
在学习中我会逐渐加入学习到的新的线程安全的问题,并给出不同的博客进行解答
1.一个Java中的线程类实例,对应了操作系统底层的一个线程,而且线程的调度是随机的
2.多个线程同并修改 count
,最终结果不可预测。
3.修改的操作不是原子的,count++
是一个“复合操作”,它包括:load add save
4.内存可见性,Java 多线程程序的内存不是共享实时的,每个线程有自己的工作内存(本地缓存)
5.指令重排序,编译器或处理器为了提高效率,会改变指令的执行顺序,只要它们认为“逻辑上没有影响”。但在并发环境下,可能破坏程序正确性
初学JMM见解,认识内存可见性和指令重排序问题-CSDN博客
多线程死锁的四个必要条件-CSDN博客
解决线程安全的几个方法-CSDN博客
为什么线程 sleep 被中断后仍然继续执行?-CSDN博客