Java并发编程

Java并发编程

StampedLock的简单用法

共3326人围观 0个不明物体

StampedLock是JDK1.8新引入的锁机制,可以简单的理解为读写锁的改进版本。我们知道读写锁可以让读和读之间完全并发,但是读和写之间是有阻塞的。StampedLock使用了一种乐观锁的读策略,...

Java并发编程

CompletableFuture用法

共4575人围观 0个不明物体

CompletableFuture是JDK1.8新增的工具类。它继承了Future和CompletionStage接口,里面提供了大量的链式调用的API。下面简单的介绍一下其用法:异步执行任务Comp...

Java并发编程

Future模式

共3212人围观 0个不明物体

Future模式是一种让调用线程可以异步处理任务的设计模式,它可以让调用线程利用异步处理的时间去执行其他任务,从而使硬件资源达到一个更好的利用率。参考以下时序图:下面介绍一下各个成员的作用:MainT...

Java并发编程

CPU Cache的优化:解决伪共享问题

共3513人围观 0个不明物体

伪共享问题(false sharing)对于解释伪共享问题,就需要了解一下缓存行的相关概念。缓存行是主存复制到高速缓存的最小单位,一般情况下缓存行的大小为32~128字节(通常为64字节)。在多线程程...

Java并发编程

生产者消费者模式

共2943人围观 0个不明物体

单生产者单消费者模式生产者消费者模型是一个经典的问题,其主要有3部分构成:生产者、阻塞队列和消费者。如下图所示:生产者消费者模式,可以在一定程度上面做到程序之间的模块解耦。但是还有一个主要的特性,就是...

Java并发编程

Java锁优化

共3207人围观 0个不明物体

我们在多线程编程的过程中,对于锁的使用有一些可以优化的地方。下面介绍一下,自己在写业务代码中需要注意的问题和JVM对锁的优化操作。业务代码中的注意事项减少锁的持有时间:意思就是在同步快内部的代码,对于...

Java并发编程

ConcurrentLinkedQueue的实现

共2622人围观 0个不明物体

今天我们介绍一下ConcurrentLinkedQueue的内部实现。从名字就可以看出来,其内部使用链表实现。下面介绍一下它的结构:基本结构单单从类图看来,结构不算复杂,有两个重要的属性就是head和...

Java并发编程

CopyOnWriteArrayList的实现

共2338人围观 0个不明物体

CopyOnWriteArrayList是自JDK5开始提供的支持并发读写的List。从名字可以大致的看出来其内部的设计思想:在写入前copy一份数据以提供修改。下面看一下具体的实现:基本结构 ...