随笔分类 - JUC
摘要:连环讨论 从AtomicInteger引入下面的问题 CAS->Unsafe->CAS底层思想->ABA->原子引用更新->如何规避ABA问题 ABA问题是什么 狸猫换太子 假设现在有两个线程,分别是T1和T2,然后T1执行某个操作的时间为10秒,T2执行某个时间的操作是2秒,最开始AB两个线程,分
阅读全文
摘要:概念 CAS的全称是Compare-And-Swap,它是cpu并发原语 它的功能是判断内存某个位置的值是否为预期值。如果是则更改为新的值,这个过程是原子的 CAS并发原语体现在java语言中就是sun.misc.Unsafe类的各个方法。调用UnSafe类中的CAS方法,JVM会帮我们实现出CAS
阅读全文
摘要:单例模式 回顾一下,单线程下的单例模式代码 饿汉式 构造器私有化 自行创建,并且用静态变量保存static 向外提供这个实例 public 强调这是一个单例,用final public class sington(){ public final static INSTANCE = new singl
阅读全文
摘要:计算机在执行程序时,为了提高性能,编译器和处理器常常会对指令重排,一般分为以下三种: 源代码 -> 编译器优化的重排 -> 指令并行的重排 -> 内存系统的重排 -> 最终执行指令 单线程环境里面确保最终执行结果和代码顺序的结果一致 处理器在进行重排序时,必须要考虑指令之间的数据依赖性 多线程环境中
阅读全文
摘要:volatile不保证原子性代码演示 通过前面对JMM的介绍,我们知道,各个线程对主内存中共享变量的操作都是各个线程各种拷贝到自己工作内存进行操作后写回到主内存中的。 这就可能存在一个线程修改了共享变量X的值,但是还未写入主内存时,另一个线程BBB又对主内存中同一个共享变量X进行操作,但此时A线程工
阅读全文
摘要:volatile是什么? java.util.concurrent包下面 concurrent并发的意思 并行与并发 并发: 同时访问某个东西,就是并发 并行: 一起做某些东西,就是并行 JUC下的三个包 java.util.concurrent - java.util.concurrent.ato
阅读全文
