Java

无锁

对于并发控制而言,锁是一种悲观的策略。它总是假设每一次的临界区操作会产生冲突,因此,必须对每次操作都小心翼翼。如果有多个线程同时需要访问临界区资源,就宁可牺牲性能让线程进行等待,所以说锁会阻塞线程执行。而无锁是一种乐观的策略,它会假设...

Java

NIO

NIOJava NIO中涉及的基础内容有通道(Channel)和缓冲区(Buffer)、文件IO和网络IO。 https://zhuanlan.zhihu.com/p/23488863 NIO(Non-blocking I/...

Java

Stream API

流是什么流是Java API的新成员,它允许你以声明性方式处理数据集合(通过查询语句来表达,而不是临时编写一个实现)。就现在来说,你可以把它们看成遍历数据集的高级迭代器。此外,流还可以透明地并行处理,你无需写任何多线程代码了! jav...

Java

HashMap分析

摘要HashMap是使用频率最高的用于映射(键值对)处理的数据类型。随着JDK(Java Developmet Kit)版本的更新,JDK1.8对HashMap底层的实现进行了优化,例如引入红黑树的数据结构和扩容的优化等。本文结合JD...

Java

GC垃圾收集器

概述简单来说,垃圾收集由两步构成:查找不再使用的对象,以及释放这些对象所管理的内存。 分代垃圾收集器根据情况将堆划分成不同的代(Generation)。这些代被称为“老年代”(Old Generation 或 Tenured Gene...

Java

线程安全与锁优化

Java虚拟机的锁优化锁偏向锁偏向是一种针对加锁操作的优化手段。它的核心思想是:如果一个线程获得了锁,那么锁就进入偏向模式。当这个线程再次请求锁时,无须再做任何同步操作。这样就节省了大量有关锁申请的操作,从而提高了程序性能。因此,对...