摘要:
一、锁 1、AQS写一个锁() CLH Lock Synchronized CAS AQS子类定义为非公共内部帮助器类(私有的内部类继承AQS),写锁的时候的一个帮助器,提供获取锁和是释放锁的功能.模板。 acquire(int arg) 以独占模式获取对象,忽略中断。 acquireShared( 阅读全文
摘要:
什么是CAS CAS (compareAndSwap),中文叫比较交换,一种无锁原子算法。过程是这样:它包含 3 个参数 CAS(V,E,N),V表示要更新变量的值,E表示预期值,N表示新值。仅当 V值等于E值时,才会将V的值设为N,如果V值和E值不同,则说明已经有其他线程做两个更新,则当前线程则什 阅读全文
摘要:
模式是脱离语言的。 问题的由来: 为什么? 多个线程操作不同实例对象。多个线程要操作同一对象,要保证对象的唯一性 解决的问题: 实例化过程中只实例化一次 解决的思路 有一个实例化的过程(只有一次),产生实例化对象 new 提供返回实例对象的方法 getInstace() 单例模式的分类 线程的安全性 阅读全文
摘要:
1、认识volatile关键字 程序举例 用一个线程读数据,一个线程改数据 存在数据的不一致性 2、机器硬件CPU与JMM (1)CPU Cache模型 程序的局部执行原理 (2)CPU缓存的一致性问题 解决方案: 1)总线加锁(粒度太大) 2)MESI() 读操作:不做任何事情,把Cache中的数 阅读全文
摘要:
一、概念 是利用锁的机制来实现同步的。 锁机制有如下两种特性: 互斥性:即在同一时间只允许一个线程持有某个对象锁,通过这种特性来实现多线程中的协调机制,这样在同一时间只有一个线程对需同步的代码块(复合操作)进行访问。互斥性我们也往往称为操作的原子性。 可见性:必须确保在锁被释放之前,对共享变量所做的 阅读全文
摘要:
1基本概念: 程序:代码,完成某一件任务,代码序列(静态的概念) 进程:程序在某些数据上的一次运行(动态的概念) 线程:一个进程可能包含一个或多个线程(占有资源的独立单元) 2 JVM与线程 JVM什么时候启动? 类被调用 JVM线程 》其他的线程(main) 线程在JVM中 3 JVM内存区域 方 阅读全文