JVM和并发编程
文章平均质量分 97
jvm
架构帅
JAVA工程师
展开
-
Java等待唤醒机制wait/notify深入解析
本文将帮助你彻底弄明白Java的wait/notify等待唤醒机制。为了弄明白wait/notify机制,我们需要清楚线程通信、volatile和synchronized关键字、wait/notify方法、Object的monitor机制。本文将会从这几个方面详细讲解Java的wait/notify等待唤醒机制。一、线程通信 如果一个线程从头到尾执行完也不和别的线程打交道的话,那就不会有各种安全性问题了。但是协作越来越成为社会发展的大势,一个大任务拆成若干个小任务之后...原创 2020-11-25 16:44:58 · 9066 阅读 · 4 评论 -
多线程代码的作用
我们应该都写过多线程代码,但是为什么要用多线程可能没有深究过,仅仅只是觉得多线程会提高系统性能,加快响应。多线程主要有下面三方面的作用1、发挥多核CPU 的优势。随着工业的进步,现在的笔记本、台式机乃至商用的应用服务器至少也都是双核的,4 核、8 核甚至 16 核的也都不少见,如果是单线程的程序,那么在双核 CPU 上就浪费了 50%, 在 4 核 CPU 上就浪费了 75%。单核 CPU 上所谓的"多线程"那是假的多线程,同一时间处理器只会处理一段逻辑,只不过线程之间切换得比较快,看着像多原创 2020-11-16 16:46:46 · 258 阅读 · 0 评论 -
Java中悲观锁和乐观锁
1、乐观锁 总是假设最好的情况,每次去取数据的时候总认为不会有其他线程对数据进行修改,因此不会上锁,但是在更新时会判断其他线程在这之前有没有对数据进行修改。一般会使用版本号机制或CAS操作实现 。version方式:一般是在数据表中加上一个数据版本号version字段,表示数据被修改的次数,当数据被修改时,version值会加一。当线程A要更新数据值时,在读取数据的同时也会读取version值,在提交更新时,若刚才读取到的version值为当前数据库中的version值相等时才更新,否则重试原创 2020-10-21 15:03:46 · 289 阅读 · 0 评论 -
线程上下文切换扫盲文
1、什么是上下文首先,需要讲清楚什么是上下文。每个任务运行前,CPU 都需要知道任务从哪里加载、又从哪里开始运行,这就涉及到 CPU 寄存器 和 程序计数器(PC):【1】CPU 寄存器是 CPU 内置的容量小、但速度极快的内存;【2】程序计数器会存储 CPU 正在执行的指令位置,或者即将执行的指令位置。这两个是 CPU 运行任何任务前都必须依赖的环境,因此叫做 CPU 上下文。2、什么是上下文切换 上下文切换就是把前一个任务的CPU上下文保存起来,然后加载新任务的上...原创 2020-09-29 09:23:27 · 631 阅读 · 0 评论 -
idea中设置JVM参数的两种方式
一、针对某个应用配置JVM参数第一步:选择Run下面的Edit Configurations....第二步:第一步打开后,出现如下界面,选择想配置的应用,然后在右侧的VM options设置JVM参数配置完,重新运行项目就行了。二、idea设置全局的JVM参数第一步:在菜单栏Help下选择Edit Customer VM Options.......打开后,可以看到一些默认的参数配置第二步:修改默认的配置的值,或者添加自己的配置第三步:重启idea..原创 2020-09-07 11:28:02 · 25912 阅读 · 2 评论 -
JVM 字节码指令手册 - 查看 Java 字节码
目录一、JVM 指令分类(1)操作数栈(2)运算与转换(3)条件转移(4)类与数组(5)调度与返回加finally二、JVM 指令集表jdk 进行的编译生成的 .class 是 16 进制数据文件,不利于学习分析。通过下命令javap -c Demo.class > Demo.txt或者其他方式可反汇编,得到字节码文件一、JVM 指令分类(1)操作数栈过程 符号 变量到操作数栈 iload, iload_, lload, lloa转载 2020-08-29 22:10:13 · 287 阅读 · 0 评论 -
JConsole连接远程服务器方法
jconsole远程连接,必须配置JMX连接参数linux 启动项目时,添加参数java -Djava.rmi.server.hostname=10.160.13.111 #远程服务器ip,即本机ip-Dcom.sun.management.jmxremote #允许JMX远程调用-Dcom.sun.management.jmxremote.port=3214 #自定义jmx 端口号-Dcom.sun.management.jmxremote.ssl=false # 是否需要ssl转载 2020-08-27 16:57:23 · 637 阅读 · 0 评论 -
Java命令行以及IDEA下查看字节码的五种方法
1.最本质的是cmd下#javap -v 类名说明:这是最原始的方法,效率低下,强烈不推荐使用。2.查看字节码的方法idea可以集成命令行使用javap、注意需要在class文件目录下,不要在java文件目录下。#java -p class文件名即可这种方式需要每次敲命令还是不方便3.在IDEA下集成javap -v上面那种方法效率只能说还是不高,其实可以在idea里建扩展工具建快捷方式在tool setting 的Program输入工具的路径,这中间可以..原创 2020-08-28 10:18:44 · 783 阅读 · 0 评论