
并发专题
文章平均质量分 91
IT拉菲
这个作者很懒,什么都没留下…
展开
-
7种单例模式
7种单例模式单例模式模式是脱离语言的。问题的由来:为什么?多个线程操作不同实例对象。多个线程要操作同一对象,要保证对象的唯一性解决的问题:实例化过程中只实例化一次解决的思路有一个实例化的过程(只有一次),产生实例化对象 new提供返回实例对象的方法:getInstace()单例模式的分类线程的安全性、性能、懒加载(lazy )1) 饿汉式public class HungerySingleton { //加载的时候就产生的实例对象 private static H原创 2020-08-27 22:42:51 · 198 阅读 · 0 评论 -
并发专题-Volatile关键字实现原理
1、认识volatile关键字程序举例用一个线程读数据,一个线程改数据存在数据的不一致性2、机器硬件CPU与JMM(1)CPU Cache模型程序的局部执行原理:使用某数据时,会将这一区域的数据全部加载(2)CPU缓存的一致性问题CPU修改内存中的共享数据的步骤:1,从内存中加载数据到Cache,寄存器2,CPU修改修改寄存器中的数据,然后更新到cache3,把更新额数据结果刷到内存数据不一致性问题,A线程修改共享变量,B读取的结果可能是修改前的,也有可能是修改后的。数据不一致的解原创 2020-08-27 22:36:51 · 211 阅读 · 0 评论 -
并发专题-锁synchronize
synchronize加锁实现了原子性(独占性,排他性)以及可见性锁机制的两个特性互斥性:即在同一时间只允许一个线程持有某个对象锁,通过这种特性来实现多线程中的协调机制,这样在同一时间只有一个线程对需同步的代码块(复合操作)进行访问。互斥性我们也往往称为操作的原子性。可见性:必须确保在锁被释放之前,对共享变量所做的修改,对于随后获得该锁的另一个线程是可见的(即在获得锁时应获得最新共享变量的值),否则另一个线程可能是在本地缓存的某个副本上继续操作从而引起不一致。Synchronize(A.class原创 2020-08-27 19:09:59 · 245 阅读 · 0 评论 -
并发基础-JVM内存模型
Java内存模型启动进程,会启动jvm(调用虚拟机的命令),加载包含main方法的类,然后按需去加载其他类,启动其他线程。java内存区域各自有各自的用途,以及创建和销毁时间,有些随着虚拟机的启动而存在,有些依赖用户线程的启动和结束而建立和销毁。JMM java内存模型规范,用于指导和规范内存数据与工作空间数据的交互 。java内存区域是按照JMM规范来划分的。1)主内存:共享的信息2)工作内存:私有信息,基本数据类型,直接分配到工作内存,引用的地址存放在工作内存,引用的对象存放在堆中3)工原创 2020-08-27 19:05:40 · 208 阅读 · 0 评论