Java内存区域

2019-02-09

Java虚拟机在运行程序时会把其自动管理的内存划分为以下几个区域,每个区域都有的用途以及创建销毁的时机。接下来会分别介绍各个区域的功能。

Read More

Java中的锁——Lock

2019-02-09

锁——是为了解决并发操作引起的脏读、数据不一致的问题。JVM提供了synchronized关键字来实现对变量的同步访问以及用waitnotify来实现线程间通信。在jdk1.5以后,JAVA提供了Lock类来实现和synchronized一样的功能,并且还提供了Condition来显示线程间通信。

Read More

Java中ConcurrentHashMap源码分析

2019-02-09

ConcurrentHashMap本质上是一个Segment数组,而一个Segment实例又包含若干个桶,每个桶中都包含一条由若干个 HashEntry 对象链接起来的链表。总的来说,ConcurrentHashMap的高效并发机制是通过以下三方面来保证的:

  • 通过锁分段技术保证并发环境下的写操作;
  • 通过 HashEntry的不变性、Volatile变量的内存可见性和加锁重读机制保证高效、安全的读操作;
  • 通过不加锁和加锁两种方案控制跨段操作的的安全性。
Read More