logo头像

Aoho's Blog

java

细说 Java 泛型及其应用

细说 Java 泛型及其应用

引出泛型我们通过如下的示例,引出为什么泛型的概念。 12345678910111213public class Test { public static void main(String[] args) { ...

基于redis的分布式锁实现

关于分布式锁很久之前有讲过并发编程中的锁并发编程的锁机制:synchronized和lock。在单进程的系统中,当存在多个线程可以同时改变某个变量时,就需要对变量或代码块做同步,使其在修改这种变量时能够线性执行消除并发修改变量。而同步...

Java异步编程接口:Callable和Future源码解析

在上一篇Java异步编程接口:Callable和Future中介绍了异步编程经常使用的Callable、Future以及FutureTask,并给出了应用示例。本文主要在上一篇的基础应用基础上,深入源码分析实现原理。本文基于JDK8。...

Java 8新特性之CompletableFuture(二)

我们在上一篇Java 8特性之CompletableFuture(一)介绍了Java8 中新增的处理类CompletableFuture部分使用特性,包括:创建、计算结果处理、进行转换和结果消费。本文将会继续讲解Completable...

Java并发工具类:CyclicBarrier和CountDownLatch

当我们启动一个系统的时候需要初始化许多数据,这时候我们可能需要启动很多线程来进行数据的初始化,只有这些系统初始化结束之后才能够启动系统。其实在Java的类库中已经提供了CountDownLatch、CyclicBarrier这3个类来...

并发Lock之ReentrantLock实现原理

我们在之前介绍了并发编程的锁机制:synchronized和lock,lock接口的重要实现类是可重入锁ReentrantLock。而上一篇并发Lock之AQS(AbstractQueuedSynchronizer)详解介绍了AQS,...

Java 8新特性之CompletableFuture(一)

Future自Java 5开始添加了Future,用来描述一个异步计算的结果。获取一个结果时方法较少,要么通过轮询isDone,确认完成后调用get()获取值,要么调用get()设置一个超时时间。但是get()方法会阻塞调用线程,这种...

Java异步编程接口:Callable和Future

本文主要讲解平时开发中常用的异步编程的接口:Callable和Future。 创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。如果需要...

并发Lock之AQS(AbstractQueuedSynchronizer)详解

1. J.U.C的lock包结构上一篇文章讲了并发编程的锁机制:synchronized和lock,主要介绍了Java并发编程中常用的锁机制。Lock是一个接口,而synchronized是Java中的关键字,synchronized...

Java 8中的Lambda表达式

2014年3月18日,Oracle公司发布了Java SE 8。距离Java 8的发布已经三年,最近正好抽空整理了Java 8的特性如下: 接口的默认方法 Lambda 表达式 函数式接口 方法与构造函数引用 Lambda 作用域 ...