首页
学习
活动
专区
工具
TVP
发布

刘君君

专栏作者
73
文章
71813
阅读量
29
订阅数
管程和信号量分析
管程也被称为监视器,指的是通过管理共享变量以及对共享变量的操作过程,实现了在一个时间点,最多只有一个线程在执行(线程安全的,支持并发)。
itliusir
2020-02-10
1.7K0
AbstractQueuedSynchronizer 源码分析
前面我们已经介绍和分析了管程,以及 JVM 层面的管程而 AQS 则是 Java 并发包中管程的一种实现。
itliusir
2020-02-01
5610
Unsafe 源码分析
Unsafe 是用于在实质上扩展 Java 语言表达能力、便于在 Java 代码里实现原本要在 C 层实现的核心库功能用的。这些功能包括裸内存的申请、释放、访问,低层硬件的 atomic/volatile 支持,创建未初始化对象等。但由于 Unsafe 类使 Java 语言拥有不应该暴露的骚操作,增加了程序出问题的风险。
itliusir
2020-01-31
9060
线程的实现与分析
线程是操作系统调度的最小单位,实现线程有三种方式,而 Java Thread 采用的是 内核线程实现
itliusir
2020-01-15
3190
ThreadLocal 源码分析
我们知道解决共享变量不安全的一种方式,就是利用每个线程的私有变量来操作,避免共享变量导致的线程不安全问题。
itliusir
2020-01-15
2680
ThreadPoolExecutor 源码分析
前面文章的 Thread 我们也分析了,因为 Java 中的Thread 和 内核线程是 1 : 1 的,所以线程是一个重量级的对象,应该避免频繁创建和销毁,我们可以使用线程池来避免。
itliusir
2020-01-15
3170
JVM Garbage Collection
每一个虚拟机线程都有自己的PC寄存器,保存Java虚拟机正在执行的字节码指令的地址,如果该方法是 native 的,那 PC 寄存器的值是 undefined
itliusir
2019-12-11
4910
JVM ClassFile Structure
魔数,判断文件是否是能被虚拟机接受的class文件,固定值为 0xCAFEBABE
itliusir
2019-12-11
3850
初识JVM指令执行流程
摘要: 记录下学习JVM指令执行流程的理解 正文: 初识JVM指令执行流程 /** * 0: aload_0 * 1: invokespecial #1 // Method java/lang/Object."<init>":()V * 4: return * * @author liugang * @since 2018-04-28 */ public class Example1 { /** * 为主方法创建一个frame并将其推入线程
itliusir
2018-05-21
4720
JDK8的ArrayList源码学习笔记
摘要:ArrayList基本上是我们在java编程中用得最多的集合类了,是一个动态的数组,在我们用ArrayList的时候发现其非常方面,功能也很强大,但是其这强大的功能是底层是怎么实现的呢? 正文
itliusir
2018-05-21
6370
JDK8的CAS实现学习笔记
摘要:CAS全称为compare and swap,是原子操作的一种,可用于在多线程编程中实现不被打断的数据交换操作,从而避免多线程同时改写某一数据时由于执行顺序不确定性以及中断的不可预知性产生的数据不一致问题。 该操作通过将内存中的值与指定数据进行比较,当数值一样时将内存中的数据替换为新的值。 –from Wikipedia 正文: 在使用上,通常会记录下某块内存中的旧值,通过对旧值进行一系列的操作后得到新值,然后通过CAS操作将新值与旧值进行交换。如果这块内存的值在这期间内没被修改过,则旧值会与内存中
itliusir
2018-05-21
7190
现在有10个随机数,随机数的范围在1到100之间。现在要求写出一种算法,将1到100之间没有在随机数中的数求出来
摘要:代码如下: 正文: package test; import java.util.Random; public class TestRandom { public static void main(String[] args) { test(); } static void test(){ int[] randomNums = new int[10]; Random random = new Random(); for (int i = 0, len
itliusir
2018-05-21
1.7K0
MAT内存分析工具使用
摘要:Eclipse Memory Analysis Tools (MAT) 是一个分析 Java堆数据的专业工具,用它可以定位内存泄漏的原因。 正文: Memory Analyzer的安装 Ecl
itliusir
2018-05-21
1.7K0
JDK8的LinkedList源码学习笔记
正文: 首先,LinkedList的继承和实现了的类和接口: LinkedList实现的接口 LinkedList 是一个继承于AbstractSequentialList的双向链表。它也可以被当作
itliusir
2018-05-21
4560
Builder模式
摘要:日常写代码有时候会遇到bean有很多的参数,也即是有多个构造器参数,这个时候我们可以考虑使用构建器。它既能保证像重叠构造器模式那样的安全性,也能保证像JavaBean模式那么好的可读性。这就是Builder模式。 正文: 讲Builder模式之前,我们先来看一下日常使用构造器的方法: package com.bean.builder;public class Bean { private int a; private int b; private int c; private int d; pr
itliusir
2018-05-21
7110
关于Java变量的可见性问题
摘要:关于java变量在工作内存和主存中的可见性问题 正文: package com.test;import java.util.concurrent.TimeUnit; public class test1 { private static boolean is = true; public static void main(String[] args) { new Thread(new Runnable() { @Override
itliusir
2018-05-21
9970
没有更多了
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档