- 博客(5)
- 资源 (4)
- 收藏
- 关注
原创 原子性、可见性、有序性与happen-before原则
1.原子性(Atomicity)原子性指的是一个操作是不可中断的,即使是在多线程环境下,一个操作一旦开始就不会被其他线程影响。由Java内存模型来直接保证的原子性变量操作包括read、load、assign、use、store和write这六个,我们大致可以认为,基本数据类型的访问、读写都是具备原子性的(例外就是long和double的非原子性协定)。如果应用场景需要一个更大范围的原子性保证(经常会遇到),Java内存模型还提供了lock和unlock操作来满足这种需求,尽管虚拟机未把lock和unlo
2020-12-29 21:28:23 825 2
原创 JMM内存模型介绍
一、JMM的定义1.什么是JMM《Java虚拟机规范》中曾试图定义一种“Java内存模型”(Java Memory Model简称JMM)来屏蔽各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的内存访问效果。Java内存模型是一种抽象的概念,并不真实存在,它描述的是一组规则或规范,通过这组规范定义了程序中各个变量(包括实例字段,静态字段和构成数组对象的元素)的访问方式。JMM是围绕原子性,有序性、可见性展开。2.主内存与工作内存Java内存模型的主要目的是定义程
2020-12-17 13:20:12 625
原创 计算机多级缓存架构和MESI缓存一致性协议
本节将介绍一下计算机的多级缓存(L1、L2、L3)架构、多级缓存与主存怎么进行数据交互的,另外会对MESI(缓存一致性协议)做下介绍,为后面的JMM模型、volatile关键字的学习打下基础。一,现代计算机硬件基本结构1.总线上面图中大部分都比较好理解(如果想详细了解的话可以看下计算机操作系统相关的书籍,了解一下冯诺依曼计算机模型等基础知识。),这里先介绍一下总线:贯穿整个系统的是一组电子管道,称作总线,它携带信息字节并负责在各个部件间传递,计算机的各个组件如CPU、内存、磁盘等通过总线进行
2020-12-13 17:12:45 1060 1
原创 Java中的线程基本概念
二、什么是线程现代操作系统在运行一个程序时,会为其创建一个进程。例如,启动一个Java程序,操作系统就会创建一个Java进程。现代操作系统调度CPU的最小单元是线程,也叫轻量级进程(Light Weight Process),在一个进程里可以创建多个线程,这些线程都拥有各自的计数器、堆栈和局部变量等属性,并且能够访问共享的内存变量。处理器在这些线程上高速切换,让使用者感觉到这些线程在同时执行。线程的实现可以分为两类:1、用户级线程(User-Level Thread)2、内核线线程(Kern
2020-12-04 20:59:26 738
java面试题合集
2018-09-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人