前几天,发了一篇文章,介绍了一下JVM内存结构、Java内存模型以及Java对象模型之间的区别。有很多小伙伴反馈希望可以深入的讲解下每个知识点。Java内存模型,是这三个知识点当中最晦涩难懂的一个,而且涉及到很多背景知识和相关知识。 网上有很多关于Java内存模型的文章,在《深入理解Java虚拟机》 ...
分类:
编程语言 时间:
2018-08-17 16:33:25
阅读次数:
174
单例模式的几种实现方式 单例模式的实现有多种方式,如下所示: 1、懒汉式,线程不安全 是否 Lazy 初始化:是 是否多线程安全:否 实现难度:易 描述:这种方式是最基本的实现方式,这种实现最大的问题就是不支持多线程。因为没有加锁 synchronized,所以严格意义上它并不算单例模式。这种方式 ...
分类:
其他好文 时间:
2018-08-14 00:54:16
阅读次数:
153
1数据类型关键字(12个): (1)char:声明字符型变量或函数 (2)double:声明双精度变量或函数 (3)enum:声明枚举类型 (4)float:声明浮点型变量或函数 (5)int:声明整型变量或函数 (6)long:声明长整型变量或函数 (7)short:声明短整型变量或函数 (8)s ...
分类:
编程语言 时间:
2018-08-13 21:00:15
阅读次数:
139
java内存模型 volatile详解 单例模式 ...
分类:
其他好文 时间:
2018-08-13 00:43:29
阅读次数:
166
volatile 作为java的关键字之一,必然有它存在的必要性;在很多的资料中,各位大神级的人物都对volatile做了深入的分析,在这里就不在赘述了;不清的朋友可以迁移到这个地址详细了解:https://www.cnblogs.com/dolphin0520/p/3920373.html 那么已 ...
分类:
其他好文 时间:
2018-08-12 18:55:55
阅读次数:
169
特性 Java内存模型实现volatile load + use 必须连续一起出现,这就保证了线程从主内存读到的值是最新的值 assign + store + write必须连续一起出现,这就保证了线程修改的值必须立刻更新到主内存 对于两个变量A和B,如果先对A执行了use或assign操作,那么就 ...
分类:
其他好文 时间:
2018-08-12 13:58:14
阅读次数:
152
一、出现线程安全性问题的条件 ?在多线程的环境下 ?必须有共享资源 ?对共享资源进行非原子性操作 二、解决线程安全性问题的途径 ?synchronized (偏向锁,轻量级锁,重量级锁) ?volatile ?JDK提供的原子类 ?使用Lock(共享锁,排它锁) 三、认识的“*锁” ?偏向锁 Jav ...
分类:
编程语言 时间:
2018-08-11 21:58:09
阅读次数:
155
Condition的使用 Condition用于实现条件锁,可以唤醒指定的阻塞线程。下面来实现一个多线程顺序打印a,b,c的例子。 先来看用wait和notify的实现: public class Demo { private volatile int singal; public synchron ...
分类:
编程语言 时间:
2018-08-11 21:53:54
阅读次数:
202
先来看看这个关键字是什么意思:volatile [?v?l?ta?l] adj. 易变的,不稳定的; 从翻译上来看,volatile表示这个关键字是极易发生改变的。volatile是java语言中,最轻量级的并发同步机制。这个关键字有如下两个作用:1、任何对volatile变量的修改,java中的其 ...
分类:
编程语言 时间:
2018-08-10 01:09:07
阅读次数:
151
volatile的应用 在多线程并发编程中synchronized和volatile都扮演者重要的角色,volatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的“可见性”。 可见性的意思是当一个线程修改一个共享变量时,另外的线程能读到这个修改的值。 如果volatile ...
分类:
其他好文 时间:
2018-08-09 19:22:22
阅读次数:
123