synchronized 的实现原理
synchronized 关键字是 Java里面用来进行同步的。它编译后,会在同步块的前后分别生成 mointorenter 和 mointerexit 字节码指令,这两个字节码指令都需要一个引用类型的参数来指定要锁定和解锁的对象。
volatile 解析
在多线程并发编程中synchronized 和 volatile 扮演着很重要的角色,volatile是轻量级的 synchronized,它能保证共享变量在多处理器下的可见性
并发集合——ConcurrentHashMap 源码分析
ConcurrentHashMap是HashMap的线程安全版本,内部也是使用(数组 + 链表 + 红黑树)的结构来存储元素。
Java内存模型详解
操作系统为了方便用户使用对硬件进行抽象,屏蔽各种细节的处理,而Java内存模型是在硬件内存模型上的更高层的抽象,它屏蔽了各种硬件和操作系统访问的差异性,保证了Java程序在各种平台下对内存的访问都能达到一致的效果。
LongAdder 详解
LongAdder 类是jdk1.8新增的原子类,在多线程环境下,它的性能比普通的Atomic类性能高很多,继承 Striped64,通过Striped64的Cell来实现功能,并且在ConcurrentHashMap中也用了Striped64的Cell。
Condition 源码分析
Condition可以替代传统的Object中的wait()、notify()和notifyAll()方法来实现线程间的通信,使线程间协作更加安全和高效。
FutureTask 源码分析
FutureTask 是一个可以取消的异步计算任务,实现Future,Runnable。提供超时控制、可以获取线程执行后的返回结果、可以取消。