[Java并发-17-并发设计模式] Immutability模式:如何利用不变性解决并发问题?

2019-07-04
阅读 4 分钟
1.5k
解决并发问题,其实最简单的办法就是让共享变量只有读操作,而没有写操作。这个办法如此重要,以至于被上升到了一种解决并发问题的设计模式:不变性(Immutability)模式。所谓不变性,简单来讲,就是对象一旦被创建之后,状态就不再发生变化。换句话说,就是变量一旦被赋值,就不允许修改了(没有写操作);没有修改操...

[Java并发-10] ReadWriteLock:快速实现一个完备的缓存

2019-05-13
阅读 3 分钟
2.4k
大家知道了Java中使用管程同步原语,理论上可以解决所有的并发问题。那 Java SDK 并发包里为什么还有很多其他的工具类呢?原因很简单:分场景优化性能,提升易用性

[Java并发-9]Lock和Condition(下) Dubbo如何用管程实现异步转同步?

2019-05-12
阅读 3 分钟
3.2k
在上一篇文章中,我们讲到 Java SDK 并发包里的 Lock 有别于 synchronized 隐式锁的三个特性:能够响应中断、支持超时和非阻塞地获取锁。那今天我们接着再来详细聊聊 Java SDK 并发包里的 Condition。

[Java并发-8]Lock和Condition(上) 隐藏在并发包中的管程

2019-05-12
阅读 4 分钟
1.8k
Java SDK 并发包内容很丰富。但是最核心的还是其对管程的实现。因为理论上利用管程,你几乎可以实现并发包里所有的工具类。在前面我们提到过在并发编程领域,有两大核心问题:一个是互斥:即同一时刻只允许一个线程访问共享资源;另一个是 同步:即线程之间如何通信、协作。

[Java并发-6]“管程”-java管程初探

2019-04-27
阅读 5 分钟
5.2k
并发编程这个技术领域已经发展了半个世纪了。有没有一种核心技术可以很方便地解决我们的并发问题呢?这个问题, 我会选择 Monitor(管程)技术。Java 语言在 1.5 之前,提供的唯一的并发原语就是管程,而且 1.5 之后提供的 SDK 并发包,也是以管程技术为基础的。除此之外,C/C++、C# 等高级语言也都支持管程。

[Java并发-2]Java如何解决可见性问题的

2019-03-18
阅读 4 分钟
3k
之前我们说了:1,可见性2,原子性3,有序性3个并发BUG的之源,这三个也是编程领域的共性问题。Java诞生之处就支持多线程,所以自然有解决这些问题的办法,而且在编程语言领域处于领先地位。理解Java解决并发问题的方案,对于其他语言的解决方案也有触类旁通的效果。