IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 偶然听说:追风少年他奶奶今天晚上二婚而我还在玩JVM -> 正文阅读

[Java知识库]偶然听说:追风少年他奶奶今天晚上二婚而我还在玩JVM

写在前面的话:? ??

时间:2021.12.31--2022元旦前一夜

地点:陕西西安(居家办公)

特别强调:手残党无法给自己做肉吃

人物:冷妆,刚入行的java小菜鸡

事件起因:在哪吒社区得到《亿级流量java高并发与网络编程实战》

事件经过:西安因为疫情居家办公,而我的电脑落在办公区域,大型社4现场

续前文:分布式Id生成器之雪花算法

引入正题之高并发JVM

对了,上面在同步机制解决方案中还提及到了死锁的产生与避免死锁的方案?


JVM

jvm概述

? ? ?全称是java虚拟机,java源文件通过编译器生成.class的字节码文件,字节码文件通过jvm生成机器码,机器码与操作系统交互,正是因为这样,保证了java语言的可移植性高,官方有”write one,run anywhere“的说法,从java的角度来看看JVM的位置

?jvm内存区域

jvm的内存区域从线程共享分为堆区和方法区(常量池),从线程私有分为本地方法栈,虚拟机栈,程序计数器

JMM(java memory model)java内存模型?

定义程序中变量(线程共享)的访问规则,分为主内存和工作内存【可以从线程私有和线程共享去理解,参考下图】

另外来说主要的一点就是线程在运行期间必须遵循的规定

  1. 只能访问自己工作内存中的变量
  2. 无法直接访问其他线程工作内存中的变量
  3. 可以通过主内存,间接访问其他线程的工作内存中变量

总结来说就是主内存和工作线程的访问问题,解决策略如下

实际上,不同线程之间在进行数据交互时,要完成经历如下8个步骤?

ps:有图有真相?

?但这里需要注意的是JVM对long、double64位的误操作,所以引入了volatile关键字


Volatile解决可见性与重排序问题

1.原子性

某一条语句不可再拆分

上图框中的展示的juc包,箭头所指的是atomic下的所有类

上图测试的atomic原子性的结果

?上图根据源码可知,atomic实现了CAS算法,保证变量的原子性操作

2.可见性

某一个线程对volatile修饰的变量进行的任何操作,都会第一时间同步到其他线程中

3.重排序(不会影响单线程程序执行结果)

某条语句内部的多个指令的执行顺序

通过对象的实例化可以理解重排序

双重检测机制下的饿汉单例模式理解指令重排

ps:volatile通过”内存屏障“实现防止指令重排?

4.volatile非线程安全

上图通过测试结果可知,volatile非线程安全?

?通过运行编译的class文件可知,白框中展示num++不是原子性操作

写在后面的话:

事件结果:现在的时间完全按照自己的规划走下去,所以写下了以上blog

碎碎念:欢迎大家指出blog中的问题,督促笔者进一步改善,你的建议是笔者坚持的动力

最后:今天是跨年夜,记得观看习大大的新年贺词? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??总结:人丑就得多看书

?

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-01-01 13:44:53  更:2022-01-01 13:48:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:03:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码