并发编程

println、sleep、Integer与线程安全的一些故事

作者 Siran | 3000字 | 阅读大约需要6分钟 | 归档于并发编程

2020年3月23日

继续阅读

synchronized 的实现原理

作者 Siran | 7400字 | 阅读大约需要15分钟 | 归档于并发编程

2020年3月20日

synchronized 关键字是 Java里面用来进行同步的。它编译后,会在同步块的前后分别生成 mointorenter 和 mointerexit 字节码指令,这两个字节码指令都需要一个引用类型的参数来指定要锁定和解锁的对象。

继续阅读

volatile 解析

作者 Siran | 2900字 | 阅读大约需要6分钟 | 归档于并发编程

2020年3月20日

在多线程并发编程中synchronized 和 volatile 扮演着很重要的角色,volatile是轻量级的 synchronized,它能保证共享变量在多处理器下的可见性

继续阅读

并发集合——ConcurrentHashMap 源码分析

作者 Siran | 8000字 | 阅读大约需要16分钟 | 归档于并发编程

2020年3月19日

ConcurrentHashMap是HashMap的线程安全版本,内部也是使用(数组 + 链表 + 红黑树)的结构来存储元素。

继续阅读

并发集合——ConcurrentSkipListMap 源码分析

作者 Siran | 9600字 | 阅读大约需要20分钟 | 归档于并发编程

2020年3月19日

跳表是一个随机化的数据结构,实质就是一种可以进行二分查找的有序链表。

继续阅读

Java内存模型详解

作者 Siran | 4300字 | 阅读大约需要9分钟 | 归档于并发编程

2020年3月8日

操作系统为了方便用户使用对硬件进行抽象,屏蔽各种细节的处理,而Java内存模型是在硬件内存模型上的更高层的抽象,它屏蔽了各种硬件和操作系统访问的差异性,保证了Java程序在各种平台下对内存的访问都能达到一致的效果。

继续阅读

AtomicStampedReference 详解

作者 Siran | 1800字 | 阅读大约需要4分钟 | 归档于并发编程

2020年3月5日

AtomicStampedReference是jdk1.5出的一个类,用于解决其他原子类无法解决的ABA问题。

继续阅读

LongAdder 详解

作者 Siran | 3800字 | 阅读大约需要8分钟 | 归档于并发编程

2020年3月5日

LongAdder 类是jdk1.8新增的原子类,在多线程环境下,它的性能比普通的Atomic类性能高很多,继承 Striped64,通过Striped64的Cell来实现功能,并且在ConcurrentHashMap中也用了Striped64的Cell。

继续阅读

Condition 源码分析

作者 Siran | 6000字 | 阅读大约需要12分钟 | 归档于并发编程

2020年3月1日

Condition可以替代传统的Object中的wait()、notify()和notifyAll()方法来实现线程间的通信,使线程间协作更加安全和高效。

继续阅读

FutureTask 源码分析

作者 Siran | 3800字 | 阅读大约需要8分钟 | 归档于并发编程

2020年2月15日

FutureTask 是一个可以取消的异步计算任务,实现Future,Runnable。提供超时控制、可以获取线程执行后的返回结果、可以取消。

继续阅读