上下文切换
阐述:CPU通过时间片分配算法来循环执行任务,当前任务执行一个时间片后会切换到下一个
任务。但是,在切换前会保存上一个任务的状态,以便下次切换回这个任务时,可以再加载这
个任务的状态。所以任务从保存到再加载的过程就是一次上下文切换
如何减少上下文切换 | 方案 |
---|---|
无锁并发编程 | 将数据的ID按照Hash算法取模分段,不同的线程处理不同段的数据 |
CAS算法 | Java的Atomic包使用CAS算法来更新数据,而不需要加锁 |
使用最少线程 | 避免创建不需要的线程 |
volatile
描述 | 特点 |
---|---|
1.使用volatile关键字会强制将修改的值立即写入主存 | 1.保证有序性、可见性 |
2.导致其他线程的工作内存中缓存变量的缓存行无效 | 2.不保证原子性 |
1 | 应用场景:状态标志 |