理解volatile其实还是有点儿难度的,它与Java的内存模型有关,所以在理解volatile之前需要先了解有关Java内存模型的概念,目前只做初步的介绍。 一、操作系统语义 计算机在运行程序时,每条指令都是在CPU中执行的,在执行过程中势必会涉及到数据的读写。 我们知道程序运行的数据是存储在主存 ...
分类:
其他好文 时间:
2019-10-02 22:55:20
阅读次数:
86
0,堆的简介 数据结构中的堆是一种特殊的二叉树,不同于 Java 内存模型中的堆。 堆必须符合以下两个条件: 从第一点可以知道,堆适合用数组来存储。 第二点中,若父节点都大于等于左右子节点,则被称为大顶堆,反之则为小顶堆。 图-最大堆 1,堆的特性 2,堆的实现 3,堆的应用 3.1堆排序 利用堆这 ...
分类:
其他好文 时间:
2019-09-24 21:03:51
阅读次数:
96
一、原子性 原子性操作指相应的操作是单一不可分割的操作。例如,对int变量count执行count++d操作就不是原子性操作。因为count++实际上可以分解为3个操作:(1)读取变量count的当前值;(2)拿count的当前值和1做加法运算;(3)将加完后的值赋给count变量。 在多线程环境中 ...
分类:
编程语言 时间:
2019-09-23 12:08:35
阅读次数:
78
1.数据结构:数组、链表、栈、队列、数 2.jmm内存模型:jmm java memory model java内存模型volatile具备两种特性,第一就是保证共享变量对所有线程的可见性。将一个共享变量声明为volatile后,会有以下效应: 1.当写一个volatile变量时,JMM会把该线程对 ...
分类:
其他好文 时间:
2019-09-18 01:10:06
阅读次数:
98
基础 1、JVM内存模型和JAVA内存模型JMM 2、Jvm垃圾回收机制 3、Java多线程、线程池及并发包 4、Java锁 5、Java集合 6、Java BIO、NIO 7、Spring源码解析; 8、SpringBoot 存储相关: 1、MySQL 2、Redis 3、MQ 架构相关: 1、分 ...
分类:
编程语言 时间:
2019-09-08 09:33:44
阅读次数:
98
一、JVM内存模型 1.JVM运行时数据区 二、Java内存模型(JMM) 1.JMM 三、Java对象模型 1.Java对象在JVM中的存储模型称之为Java对象模型。 四、总结 1.JVM内存模型,和Java虚拟机的运行时区域有关。 2.Java内存模型,和Java的并发编程有关。 3.Java ...
分类:
编程语言 时间:
2019-09-07 00:31:36
阅读次数:
97
本文由 "简悦 SimpRead" 转码, 原文地址 https://www.toutiao.com/i6732361325244056072/ Java 作为一种面向对象的,跨平台语言,其对象、内存等一直是比较难的知识点。而且很多概念的名称看起来又那么相似,很多人会傻傻分不清楚。比如本文我们要讨论 ...
分类:
编程语言 时间:
2019-09-04 20:43:32
阅读次数:
93
1、Java内存模型(Java Memory Model,JMM):线程、主内存和工作内存。所有的变量都存储在主内存(虚拟机内存的一部分)中,每条线程还有自己的工作内存。线程对变量的所有操作(读取、赋值等)必须在工作内存中进行,不同线程之间无法直接访问对方工作内存中的变量,需要通过主内存来完成。 2 ...
分类:
编程语言 时间:
2019-08-24 18:44:20
阅读次数:
115
为了更好的理解 Java 内层模型,我们需要简单地将 CPU 缓存模型回忆一下。 CPU Cache 缓存 在计算机中,虽然 CPU 的计算速度很快,但是计算机中绝大多数的任务不能只靠 CPU 的计算就能完成。还需要包括与内层的数据交互,读写、存储元算结果等。但是由于计算机的存储设备和 CPU 的运 ...
分类:
编程语言 时间:
2019-08-22 01:16:42
阅读次数:
149
1.java中产生并发问题的主要原因有哪三个? 原子性、可见性和有序性 2.什么是java内存模型? java虚拟机规范中用来屏蔽掉各种硬件和操作系统内存访问差异,java内存模型的主要目标是定义程序中各个变量的访问规则。 3.java中除了volatile关键字可以实现内存可见性外还有哪些关键字可 ...
分类:
编程语言 时间:
2019-08-18 20:04:50
阅读次数:
123