Redis事务简介 Posted on 2020-05-09 | In redis Words count in article: 758 | Reading time ≈ 2 Redis事务简介Redis通过multi、exec、watch等命令来实现事务功能。事务提供了一种将多个命令请求打包,然后一次性、按顺序地执行多个命令的机制,并且在事务执行的期间,服务器不会中断事务而改去执行其他客户端命令的请求,它会将事务中的所有命令都执行完毕,然后才去处理其他客户端的命令请求。 ... Read more »
Redis基本数据类型 Posted on 2020-05-08 | In Redis Words count in article: 2.8k | Reading time ≈ 10 Redis基本数据类型基本数据类型Redis支持5中数据类型,分别是:string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(sorted set:有序集合)。 它们存储的值以及相应的能力如下表所示: 数据结构 值 读写能力 string 可以是字符串、整数 ... Read more »
FutureTask源码解析 Posted on 2020-05-07 | In 源码 Words count in article: 2.5k | Reading time ≈ 12 FutureTask源码解析FutureTask是Future的实现类,它实现了RunnableFuture接口,而RunnableFutrue又继承了Runnable和Future接口。 FutureTask可以拆分为Future和Task,Future对应Future接口的相关功能,Task对应 ... Read more »
Java使用Future、Callable和FutureTask Posted on 2020-05-07 | In Java Words count in article: 1.5k | Reading time ≈ 7 Java使用Future、Callable和FutureTask在使用多线程的时候,可以继承Thread类或者实现Runnable接口,这样就可以启动一个线程并运行了。但是这种模式有个问题,就是无法获取到线程调用的结果。要获取结果的话必须使用共享变量或者线程通信的方式来达到效果,这样使用起来比较麻烦 ... Read more »
Java使用CompletableFuture解析 Posted on 2020-05-07 | In Java Words count in article: 3.8k | Reading time ≈ 19 Java使用CompletableFutureJava提供了Future接口用来描述异步计算的结果。它可以使用isDone方法检查计算是否完成,可以使用cancel方法停止任务的执行,也可以用get方法阻塞住调用线程,直到计算完成。 但是它也存在一些问题,比如获取计算结果,只能通过阻塞或者轮询的方式 ... Read more »
SynchronousQueue源码解析 Posted on 2020-05-06 | In 源码 Words count in article: 2.9k | Reading time ≈ 14 SynchronousQueue源码解析SynchronousQueue是一个比较特别的阻塞队列,它是一个没有容量的队列。如果有线程往该队列里面添加元素,但是又没有消费线程过来消费,就不能在添加元素,反之亦然。 SynchronousQueue也被应用到CachedThreadPool中,作为其默认 ... Read more »
DelayQueue源码解析 Posted on 2020-05-06 | In 源码 Words count in article: 2.4k | Reading time ≈ 11 DelayQueue源码解析DelayQueue并发队列是一个无界阻塞延迟队列,队列中的每个元素都有个过期时间,当从队列获取元素时,只有过期元素才会出队列。队列头元素时最快要过期的元素。 DelayQueue使用PriorityQueue存放数据,使用ReentrantLock实现线程同步。 另外, ... Read more »
ArrayBlockingQueue源码解析 Posted on 2020-05-05 | In 源码 Words count in article: 2.3k | Reading time ≈ 11 ArrayBlockingQueue源码解析ArrayBlockingQueue是一个用数组实现的有界阻塞队列,内部按先进先出的原则对元素进行排序。 类图ArrayBlockingQueue的类图如下所示: ArrayBlockingQueue实现了BlockingQueue接口和继承了Abstr ... Read more »
ConcurrentLinkedQueue源码解析 Posted on 2020-05-05 | In 源码 Words count in article: 3.7k | Reading time ≈ 16 ConcurrentLinkedQueue源码解析ConcurrentLinkedQueue是一个基于链表节点Node的无界线程安全队列。它是一个先进先出队列,头结点是在这个队列中最久的节点,尾节点是在这个队列中最新的节点。每次插入新节点都从尾部插入,获取节点就从头部插入。 ConcurrentLi ... Read more »
LinkedBlockingQueue源码解析 Posted on 2020-05-05 | In 源码 Words count in article: 2.8k | Reading time ≈ 13 LinkedBlockingQueue源码解析ConcurrentLinkedQueue是通过CAS实现的一个队列,下面我们研究下通过ReentrantLock实现的队列-LinkedBlockingQueue。LinkedBlockingQueue也是使用单向链表实现的,它也有两个Node,分别为 ... Read more »