java
WangYangXiang
这个作者很懒,什么都没留下…
展开
-
Volatile
volatile 关键字的主要作用就是保证变量的可见性然后还有一个作用是防止指令重排序。 并发编程的特性: 原子性 : 一个的操作或者多次操作,要么所有的操作全部都得到执行并且不会收到任何因素的干扰而中断,要么所有的操作都执行,要么都不执行。synchronized 可以保证代码片段的原子性。 可见性 :当一个变量对共享变量进行了修改,那么另外的线程都是立即可以看到修改后的最新值。volatile 关键字可以保证共享变量的可见性。 有序性 :代码在执行的过程中的先后顺序,Java 在编译器以及运行期间的优化原创 2020-08-16 20:23:26 · 121 阅读 · 0 评论 -
ConcurrentHashMap源码分析(jdk8)
前言 数组+链表+红黑树 CHM是一个线程安全的Map集合。 这里主要分析以下内容。 初始化Map 插入元素 扩容机制 链表转红黑树 元素统计 读前 首先了解一下用到的几个ConcurrentHashMap几个内部类。 Node 链表节点 TreeNode 红黑树节点 CounterCell 用于计算元素个数 ForwardingNode 用于扩容时占位 SIZECTL SIZECTL ==-1 表示有线程正在初始化Map SIZECTL < -1 表示有线程正在扩容原创 2020-08-15 11:03:52 · 176 阅读 · 1 评论 -
有关java Collections工具类的使用中 Collections.sort的使用
sort 简介: Collections.sort 的排序默认是升序排序,采用的是快速排序的算法原创 2018-10-30 14:46:31 · 185 阅读 · 0 评论 -
spring boot 自定义配置
Spring Boot自动配置自带了很多配置类,每一个都能运用 在你的应用程序里。它们都使用了Spring 4.0的条件化配置,可以在运行时判断这个配置是该被运用,还是该被忽略。 spring boot 自定义配置文件可以有多种途径: 1:命令行参数 2: java:comp/env里的JNDI属性 3:JVM系统属性 4: 操作系统环境变量 5: 随机生成的带random.*前缀的属性(在设置其...原创 2019-04-09 20:20:40 · 213 阅读 · 0 评论 -
jvm学习笔记(1)
首先区分jdk和jre的区别 jdk:jdk是用于java程序开发的最小环境,包含java程序设计语言,java虚拟机,javaAPI类库。 JRE:jre是支持java程序运行的标准环境,包含java虚拟机以及javaAPI类库中的Java SE API子集 第二章 运行时数据区域 方法区:是各个线程共享,它用于存储已被虚拟机加载的类信息,常量,静态常量,即时编译器编译后的代码等数据。 运行时常...原创 2019-05-04 15:00:02 · 130 阅读 · 0 评论