ConcurrentHashMap源码分析

HashMap、HashTable是JDK中提供的两种的容器,在平时开发中经常会使用到。但在并发编程中,HashMap可能会导致程序死循环,而HashTable就是在所有涉及对该哈希表操作的方法上都加上了synchronized关键字,进行加锁操作。这么做实现了线程安全,但是效率非常低。因此就有了ConcurrentHashMap。

阅读更多

ThreadLocal解析

在面试中,ThreadLocal是一个经常会被问到的知识点,所以今天就好好分析一下它的实现原理。(基于JDK1.8)

阅读更多

HashMap源码分析

在JDK1.6,JDK1.7中,HashMap采用位桶+链表实现,即使用链表处理冲突,同一hash值的链表都存储在一个链表里。但是当位于一个桶中的元素较多,即hash值相等的元素较多时,通过key值依次查找的效率较低。而JDK1.8中,HashMap采用位桶+链表+红黑树实现,当链表长度超过阈值(8)时,将链表转换为红黑树,这样大大减少了查找时间。这里就主要研究一下JDK1.8的HashMap源码。

阅读更多

TCP的可靠性传输

TCP通过检验和、序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现可靠性传输。

阅读更多

Java队列同步器AQS

队列同步器,AbstractQueuedSynchronized,简称AQS,是用来构建锁或者其他同步组建的基础框架,常用的有ReentrantLock、ReadWriteLock(实现类ReentrantReadWriteLock),内部实现都依赖于它。Doug Lea大神期望它能够成为实现大部分同步需求的基础。

阅读更多

Binder机制简析(四)

binder在framework层,采用JNI技术来调用native(C/C++)层的binder架构,从而为上层应用程序提供服务。 看过binder系列之前的文章,我们知道native层中,binder是C/S架构,分为Bn端(Server)和Bp端(Client)。对于java层在命名与架构上非常相近,同样实现了一套IPC通信架构。

阅读更多

Binder机制简析(三)

注册Service

Service组件运行在Server进程中,首先要将Service注册到Service Manager中,再启动一个Binder线程池来等待和处理Client的通信请求。

阅读更多

Binder机制简析(二)

Binder机制简析(一)中大概分析了Binder驱动,本章主要分析Service Manager。

阅读更多

Binder机制简析(一)

Binder是Android系统提供的一种IPC机制,是Android系统中的最重要的组成。

阅读更多

Java内存模型(JMM)

Java的并发采用的是共享内存模型,Java线程之间的通信总是隐式进行,整个通信过程对程序员完全透明。因此在开发过程中很可能遇到各种奇怪的内存可见性问题。

阅读更多