摘要:
零、了解 Java线程之间的通信对程序员完全透明,内存可见性问题很容易困扰Java程序员,本章将揭开Java内存模型神秘的面纱。本章大致分4部分:Java内存模型的基础,主要介绍内存模型相关的基本概念;Java内存模型中的顺序一致性,主要介绍重排序与顺序一致性内存模型;同步原语,主要介绍3个同步原语 阅读全文
摘要:
一、volatile的应用 1.1、volatile的实现原理 原子性: 操作A和操作B: 对于操作A来说:操作B要么不执行,要么完全执行完。B对于A就有原子性 可见性:(加锁) 一个线程对一个变量进行修改,另外一个线程可以立马感知到,必须等待。 有序性: 代码执行的顺序和大脑想象的顺序是一样的,所 阅读全文
摘要:
一、上下文切换 CPU不停地切换线程执行,我们感觉多个线程是同时执行的,实际是来回切换时间片达到的,时间片的切换一般是 几十毫秒(ms) 1.1、如何减少上下文的切换 减少上下文切换的方法有无锁并发编程、CAS算法、使用最少线程、使用协程 1、无锁并发编程。 多线程竞争锁的时,会引起上下文的切换,所 阅读全文