Posts
wangwang's technology blog
Cancel

ReentrantLock是Java并发包中提供的一个可重入的互斥锁,它拥有与synchronized相同的作用,但却比synchronized有更好的性能,在许多高并发编程中都会用到它。由于大部分同学都只停留在了API调用的层次,对ReentrantLock的原理一知半解,甚至一无所知,因此写下了这篇文章,让同学们真正的把ReentrantLock给拿下! 本文将会从以下几个方面去进行分...

有时候会遇到同学们在问:“我打印出来的Java对象大小为什么总是24bytes,32bytes,40bytes,为什么不能是25bytes,26bytes,27bytes呢?除此之外,我发现它们都是8的倍数唉,好奇怪!“。为了让这些同学不再疑惑,于是我决定写下这篇文章。 本文将会从以下几个方面去分享: Java中为什么会有这个现象 如何使用C语言证明内存对齐 计算机为什么要使...

上一篇文章分享了volatile的实现原理,其中提到了CPU的乱序执行,这篇文章来分享一下CPU乱序执行的一种最简单证明。 将会从以下几个方面去作出分享: 如何证明CPU乱序执行 为什么要开多线程去证明 如何证明CPU乱序执行 通过一段很简单的Java代码就能证明CPU存在乱序执行,现在我把这段代码贴在下面。 public class CpuExecOutOfOrderT...

最近学习了volatile的实现原理,有一些心得体会,写这篇文章记录一下。 将会从以下几个方面去描述volatile的技术内幕: 功能特性与使用场景 字节码层面分析 JVM层面分析 CPU层面分析 功能特性与使用场景 保证数据可见性 在多线程环境下,多个线程共享某个volatile修饰的数据。当其中一个线程修改了这个数据之后,其他线程将能及时获取到该数据的最新值。 ...