个人简介

Echo Blog


江湖无名 安心练剑
  • JCIP-21-thread pool shutdown 如何优雅的关闭线程池
    背景 前几天在和同事聊一个需求,说是有个数据查询的功能,因为涉及到多个第三方接口调用,想用线程池并行来做。 很正常的一个方案,但是上线后发现,每次服务发布的时候,这个数据查询的功能就会挂掉,后来发现是线程池没有做好关闭,这里总结一下。 关键字:线程池、shutdown、shutdownNow、interrupt 一、线程中断 interrupt 先补一补基础的知识:线程中断。 线...
    2019-01-18 03:21:15 | Concurrency
  • JCIP-20-thread 源码
    Thread 示例 一、继承Thread类创建线程类 (1)定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务。因此把run()方法称为执行体。 (2)创建Thread子类的实例,即创建了线程对象。 (3)调用线程对象的start()方法来启动该线程。 public class FirstThreadTest extends Threa...
    2019-01-18 03:21:15 | Concurrency
  • JCIP-19-闭锁(如CountDownLatch),栅栏(如CyclicBarrier),信号量(如Semaphore)和阻塞队列(如LinkedBlockingQueue)
    同步工具类 同步工具类主要包括闭锁(如CountDownLatch),栅栏(如CyclicBarrier),信号量(如Semaphore)和阻塞队列(如LinkedBlockingQueue)等; FutureTask/Future 也可以达到同样的目的。 使用同步工具类可以协调线程的控制流; 同步工具类封装了一些状态,这些状态决定线程是继续执行还是等待,此外同步工具类还提供了修改状...
    2019-01-18 03:21:15 | Concurrency
  • JCIP-18-thread InterruptedException 中断异常处理及中断机制
    java 中断机制 要知道如何处理,首先要知道 java 的中断机制。 引言 如果对 Java 中断没有一个全面的了解,可能会误以为被中断的线程将立马退出运行,但事实并非如此。 中断机制是如何工作的?捕获或检测到中断后,是抛出 InterruptedException 还是重设中断状态以及在方法中吞掉中断状态会有什么后果? Thread.stop 与中断相比又有哪些异同? 什么情...
    2019-01-18 03:21:15 | Concurrency
  • JCIP-17-双端队列之 ConcurrentLinkedDeque
    问题 ConcurrentLinkedDeque 是什么? 优缺点? 应用场景? 源码实现? 个人启发? 引言 在并发编程中我们有时候需要使用线程安全的队列。 如果我们要实现一个线程安全的队列有两种实现方式一种是使用阻塞算法,另一种是使用非阻塞算法。 使用阻塞算法的队列可以用一个...
    2019-01-18 03:21:15 | Concurrency
  • JCIP-16-双端队列之 LinkedBlockingDeque
    问题 LinkedBlockingDeque 是什么? 优缺点? 应用场景? 源码实现? 个人启发? LinkedBlockingDeque 双向并发阻塞队列。 所谓双向是指可以从队列的头和尾同时操作,并发只是线程安全的实现,阻塞允许在入队出队不满足条件时挂起线程,这里说的队列是指...
    2019-01-18 03:21:15 | Concurrency
  • JCIP-15-双端队列之 ArrayDeque
    ArrayDeque ArrayDeque不是线程安全的。 ArrayDeque不可以存取null元素,因为系统根据某个位置是否为null来判断元素的存在。 当作为栈使用时,性能比Stack好;当作为队列使用时,性能比LinkedList好。 特性 无容量大小限制,容量按需增长; 非线程安全队列,无同步策略,不支持多线程安全访问; ...
    2019-01-18 03:21:15 | Concurrency
  • JCIP-14-双端队列与工作密取
    双端队列 Deque 是 Double ended queue (双端队列) 的缩写,读音和 deck 一样,蛋壳。 Deque 主要实现类有ArrayDeque 和 LinkedBlockingDeque。 使用场景 Deque 的实现类主要分为两种场景: 一般场景 LinkedList 大小可变的链表双端队列,允许元素为 null ArrayDeque 大下可变的数...
    2019-01-18 03:21:15 | Concurrency