Java

死锁&重入锁

通俗的说,死锁就是两个或者多个线程,相互占用对方需要的资源,而都不进行释放,导致彼此之间都相互等待对方释放资源,产生了无限制等待的现象。死锁一旦发生,如果没有外力介入,这种等待将永远存在,从而对程序产生严重的影响。如果想避免死锁,除了...

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...