package com.google.thread3;

import java.lang.management.ManagementFactory;
import java.lang.management.ThreadInfo;
import java.lang.management.ThreadMXBean; public class ThreadDemo {
public static void main(String[] args) {
ThreadMXBean threadMXBean = ManagementFactory.getThreadMXBean();
ThreadInfo[] dumpAllThreads = threadMXBean.dumpAllThreads(false, false);
for (int i = 0; i < dumpAllThreads.length; i++) {
ThreadInfo threadInfo = dumpAllThreads[i];
System.out.println(threadInfo.getThreadId()+threadInfo.getThreadName());
}
}
}

ABA问题

package com.google;

import java.util.concurrent.atomic.AtomicInteger;

//volatile 不保证原子性
//解决volatile的原子性问题(synchronized)(AtomicInteger--->CAS)
class MyData2 {
AtomicInteger number = new AtomicInteger();
public void addPlus() {
number.addAndGet(1);
}
} public class Demo2 {
public static void main(String[] args) {
MyData2 myData2 = new MyData2();
for (int i = 1; i <= 20; i++) {
new Thread(() -> {
for (int j = 1; j <= 1000; j++) {
myData2.addPlus();
}
}, "AAA").start();
}
while (Thread.activeCount() > 2) {
Thread.yield();
}
System.out.println(myData2.number);
}
}

指令重排序

package com.google;
//指令重排序
public class Demo3 {
public static void main(String[] args) {
mySort();
}
public static void mySort(){
int x = 11;
int y = 12;
x = x + 5;
y = x * x;
System.out.println(x);
System.out.println(y);
}
}

  

ThreadMBean的更多相关文章

  1. Jconsole 监控tomcat

    通过jconsole监控可以获取监控tomcat的相关的数据信息 如何通过代码来获取其中的线程和内存状况呢? 首先要配置好jconsole监控的相关配置,一搜基本就是那一个, 配置配不好的话接下来的工 ...

  2. Java应用调优指南之-工具篇

    1. 土法调优两大件 先忆苦思甜,一般人在没有Profile工具的时候,调优的两大件,无非Heap Dump 与 Thread Dump. 1.1 Heap Dump jmap -dump:live, ...

  3. 获取本地的jvm信息,进行图形化展示

    package test1; import java.lang.management.CompilationMXBean; import java.lang.management.GarbageCol ...

  4. 聊聊openjdk的BufferPoolMXBean

    本文主要研究一下openjdk的BufferPoolMXBean PlatformManagedObjectjava.management/java/lang/management/PlatformM ...

  5. [JZOJ100043] 【NOIP2017提高A组模拟7.13】第K小数

    Description 有两个正整数数列,元素个数分别为N和M.从两个数列中分别任取一个数相乘,这样一共可以得到N*M个数,询问这N*M个数中第K小数是多少. Input 输入文件包含三行. 第一行为 ...

  6. JVM 运行参数 & 代码监控

    1.Java代码监控 JDK提供java.lang.management包, 其实就是基于JMX技术规范,提供一套完整的MBean,动态获取JVM的运行时数据,达到监控JVM性能的目的. packag ...

随机推荐

  1. OPENMP FOR CONSTRUCT GUIDED 调度方式实现原理和源码分析

    OPENMP FOR CONSTRUCT GUIDED 调度方式实现原理和源码分析 前言 在本篇文章当中主要给大家介绍在 OpenMP 当中 guided 调度方式的实现原理.这个调度方式其实和 dy ...

  2. 不像JVM的JVM

    1.面向对象 面向对象的思想:将功能封装到对象中,通过对象去实现 面向对象的目的:将复杂的事情简单化,将以前过程中的执行者变成了指挥者且符合现在人们的思考习惯 面向对象的三大特征: 封装:将对象的实现 ...

  3. 下篇 | 使用 🤗 Transformers 进行概率时间序列预测

    在<使用 Transformers 进行概率时间序列预测>的第一部分里,我们为大家介绍了传统时间序列预测和基于 Transformers 的方法,也一步步准备好了训练所需的数据集并定义了环 ...

  4. sublime text中开启本地服务器

    步骤: 1 Ctrl+shift+p-> 输入选中install package 2 输入sublimeserver回车安装即可 3 安装完了以后,需要开启服务器 4 回到页面上右键 转载于:h ...

  5. 常用的hive sql

    细节:sql 中有涉及到正则匹配函数的,要注意转义符号 因为在不同语言下正则匹配规则是否需要加转义符号是不同的,举例,regexp_replace 函数,在hive sql的正则匹配规则的 \d+ 需 ...

  6. vivado报错vivado 12-8300 launch hls failed please see vivado hls.log for details

    报错: 解决方案: 1. Download the "y2k22_patch-1.2.zip" file attached to this page 2. Unzip the fi ...

  7. Dockerfile的指令和编写

    每个优秀的人,背后都有一段沉默的时光 前言 学习Docker基础知识 什么是Dockerfile? Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明 指 ...

  8. [GKCTF2021]random

    [GKCTF2021]random 本题出现了MT19937伪随机数生成算法. 目录 [GKCTF2021]random 题目 分析 MT19937算法 步骤 代码实现 解法1 解法2 总结 题目 t ...

  9. 通过命令上传到GitHub

    从零开始命令行上传代码到GitHub 前情概要: ​ 要提交代码到GitHub上,本来想要通过idea上传代码,然后去网上搜索了相关的文章,按照步骤一步一步的操作,结果还是没有弄好,也会出现各种各样的 ...

  10. 如何将多个TXT合并成一个TXT,文件名称提取

    方法1:1.将所有需要合并的TXT整理到一个文件夹中,切记,TXT合并最好每个TXT内容头或尾留一行间距,因为合并是直接合并,不会保留间距. 2.使用Windows命令cmd,切换到文件所在文件夹 3 ...