1. 线程是抢占式执行,线程间的调度充满了随机性~
【根本原因】
2. 多个线程对同一个变量进行修改操作~
【通过调整代码结构,使得不同线程修改不同的变量】
3.针对变量的操作不是原子(一步到位)的~
【使用synchronized关键字,通过加锁,将多个操作打包成一个原子】
4.内存可见性
【使用volatile关键字】
5. 指令重排序
【使用synchronized关键字】
1. 线程是抢占式执行,线程间的调度充满了随机性~
【根本原因】
2. 多个线程对同一个变量进行修改操作~
【通过调整代码结构,使得不同线程修改不同的变量】
3.针对变量的操作不是原子(一步到位)的~
【使用synchronized关键字,通过加锁,将多个操作打包成一个原子】
4.内存可见性
【使用volatile关键字】
5. 指令重排序
【使用synchronized关键字】