随笔分类 -  Java线程

Java线程以及并发包相关知识
摘要:前言 CompletableFuture是对Future的一种强有力的扩展,Future只能通过轮询isDone()方法或者调用get()阻塞等待获取一个异步任务的结果,才能继续执行下一步,当我们执行的异步任务很多,而且相互之前还要依赖结果的时候,可能会创建很多这样的Future,并通过get或者轮 阅读全文
posted @ 2019-08-03 18:41 莫待樱开春来踏雪觅芳踪 阅读(2574) 评论(0) 推荐(0)
摘要:前言 CompletionStage是Java8新增得一个接口,用于异步执行中的阶段处理,其大量用在Lambda表达式计算过程中,目前只有CompletableFuture一个实现类,但我先从这个接口的方法开始介绍,为了举例说明这些接口方法的使用,会用到部分CompletableFuture的方法, 阅读全文
posted @ 2019-07-30 16:49 莫待樱开春来踏雪觅芳踪 阅读(13234) 评论(1) 推荐(3)
摘要:前言 前面介绍了Java并发包提供的三种线程池,它们用处各不相同,接下来介绍一些工具类,对这三种线程池的使用。 Executors Executors是JDK1.5就开始存在是一个线程池工具类,它定义了用于Executor、ExecutorService、ScheduledExecutorServi 阅读全文
posted @ 2019-07-28 23:02 莫待樱开春来踏雪觅芳踪 阅读(1542) 评论(0) 推荐(0)
摘要:前言 前面介绍了ForkJoinPool相关的两个类ForkJoinTask、ForkJoinWorkerThread,现在开始了解ForkJoinPool。ForkJoinPool也是实现了ExecutorService的线程池。但ForkJoinPool不同于其他类型的ExecutorServi 阅读全文
posted @ 2019-07-28 15:51 莫待樱开春来踏雪觅芳踪 阅读(3448) 评论(0) 推荐(1)
摘要:前言 这是Java并发包提供的最后一个线程池实现,也是最复杂的一个线程池。针对这一部分的代码太复杂,由于目前理解有限,只做简单介绍。通常大家说的Fork/Join框架其实就是指由ForkJoinPool作为线程池、ForkJoinTask(通常实现其三个抽象子类)为任务、ForkJoinWorker 阅读全文
posted @ 2019-07-28 11:35 莫待樱开春来踏雪觅芳踪 阅读(10325) 评论(1) 推荐(1)
摘要:前言 它是一种可以安排在给定的延迟之后执行一次或周期性执行任务的ThreadPoolExecutor。因为它继承了ThreadPoolExecutor, 当然也具有处理普通Runnable、Callable 任务的能力,当需要多个工作线程辅助时,或者当需要 ThreadPoolExecutor 具有 阅读全文
posted @ 2019-07-23 19:42 莫待樱开春来踏雪觅芳踪 阅读(1161) 评论(1) 推荐(0)
摘要:参数详解 ExecutorService的最通用的线程池实现,ThreadPoolExecutor是一个支持通过配置一些参数达到满足不同使用场景的线程池实现,通常通过Executors的工厂方法进行配置,比如Executors.newFixedThreadPool,Executors.newSing 阅读全文
posted @ 2019-07-21 21:29 莫待樱开春来踏雪觅芳踪 阅读(674) 评论(0) 推荐(0)
摘要:前言 线程池的作用就是将线程的管理、创建、销毁等操作与线程需要执行的任务隔离开来,从而避免线程频繁的创建与销毁,以及大量的线程的上下文切换造成的资源损耗。关于Java并发包中的线程池部分,我把它们分为两部分,即线程池和Fork/Join框架。 线程池 通常线程池的时候大家都是从工具类Executor 阅读全文
posted @ 2019-07-16 20:01 莫待樱开春来踏雪觅芳踪 阅读(505) 评论(0) 推荐(0)
摘要:前言 这是Java并发包最后一个集合框架的数据结构,其复杂程度也较以往任何数据结构复杂的多,顾名思义ConcurrentHashMap是线程安全版本的HashMap,总所周知HashMap是非线程安全的,若直接用于多线程并发环境将会出现很多问题,比如数据丢失,甚至某些操作陷入死循环导致CPU利用率1 阅读全文
posted @ 2019-07-12 20:43 莫待樱开春来踏雪觅芳踪 阅读(1192) 评论(1) 推荐(0)
摘要:引言 前面介绍了CopyOnWriteArraySet,本来接着是打算介绍ConcurrentSkipListSet,无耐ConcurrentSkipListSet的内部实现其实是依赖一个ConcurrentSkipListMap实例实现的,所以必须先理解ConcurrentSkipListMap, 阅读全文
posted @ 2019-07-06 09:31 莫待樱开春来踏雪觅芳踪 阅读(1253) 评论(0) 推荐(0)
摘要:前言 前面介绍完了队列(包括双端队列),今天探讨以下Java并发包中一个List的并发数据结构实现CopyOnWriteArrayList,顾名思义CopyOnWriteArrayList也是一种基于数组的类似ArrayList的集合,CopyOnWriteArrayList比起ArrayList最 阅读全文
posted @ 2019-07-01 21:42 莫待樱开春来踏雪觅芳踪 阅读(981) 评论(0) 推荐(0)
摘要:前言 前面介绍的Queue都是通过Lock锁实现的阻塞队列,今天介绍一种非阻塞队列ConcurrentLinkedQueue,所谓非阻塞,其实就是通过CAS代替加锁来实现的高效的非阻塞队列。当许多线程共享对公共集合的访问时,ConcurrentLinkedQueue是一个合适的选择。与大多数其他并发 阅读全文
posted @ 2019-05-21 20:40 莫待樱开春来踏雪觅芳踪 阅读(854) 评论(0) 推荐(0)
摘要:前言 严格来说SynchronousQueue并不是像它的名字那样是一种Queue,它更像是一个数据接力的交汇点,还记得在介绍Exchanger的时候提到过Exchanger可以看作是SynchronousQueue的双向形式吗,Exchanger是一种可以同时容纳多对线程进行两两交换数据的场所,所 阅读全文
posted @ 2019-02-25 16:58 莫待樱开春来踏雪觅芳踪 阅读(958) 评论(0) 推荐(0)
摘要:前言 前面介绍了优先级队列PriorityBlockingQueue,顺带也说了一下PriorityQueue,两者的实现方式是一模一样的,都是采用基于数组的平衡二叉堆实现,不论入队的顺序怎么样,take、poll出队的节点都是按优先级排序的。但是PriorityBlockingQueue/Prio 阅读全文
posted @ 2019-01-30 21:26 莫待樱开春来踏雪觅芳踪 阅读(5045) 评论(0) 推荐(2)
摘要:前言 接下来继续BlockingQueue的另一个实现,优先级阻塞队列PriorityBlockingQueue。PriorityBlockingQueue是一个无限容量的阻塞队列,由于容量是无限的所以put等入队操作其实不存在阻塞,只要内存足够都能够立即入队成功,当然多个入队操作的线程之间还是存在 阅读全文
posted @ 2019-01-29 19:34 莫待樱开春来踏雪觅芳踪 阅读(1098) 评论(0) 推荐(0)
摘要:前言 比起ArrayBlockingQueue,LinkedBlockingQueue应该是最被大家常用的阻塞队列,LinkedBlockingQueue是基于链表的一种可选容量的阻塞队列,也就是说,在构造LinkedBlockingQueue实例的时候,你可以像ArrayBlockingQueue 阅读全文
posted @ 2019-01-26 12:40 莫待樱开春来踏雪觅芳踪 阅读(1865) 评论(0) 推荐(0)
摘要:引言 作为BlockingQueue最常见的实现类之一,ArrayBlockingQueue是通过数组实现的FIFO先进先出有界阻塞队列,它的大小在实例被初始化的时候就被固定了,不能更改。该类支持一个可选的公平策略,用于被阻塞等待的线程获取独占锁的排序,因为ArrayBlockingQueue内部的 阅读全文
posted @ 2019-01-24 20:26 莫待樱开春来踏雪觅芳踪 阅读(913) 评论(0) 推荐(2)
摘要:概述 接下来开始学习java.util.concurrent包中一些Collection集合的子类,关于Map的一些子类将在这些子类完成之后再开始学习。下图是Java并发包中关于Collection接口的一些实现的关系类图,当然为了简化复杂度,我没有就所有的父子关系都列出来,而是仅仅就一些特殊的关系 阅读全文
posted @ 2019-01-17 20:45 莫待樱开春来踏雪觅芳踪 阅读(544) 评论(0) 推荐(0)
摘要:前言 承接上文Java并发包同步工具之Phaser,讲述了同步工具Phaser之后,搬家博客到博客园了,接着未完成的Java并发包源码探索,接下来是Java并发包提供的最后一个同步工具Exchanger。 Java并发包中的Exchanger由来已久,从JDK1.5就存在了,但是到了JDK8实现方式 阅读全文
posted @ 2018-12-10 17:40 莫待樱开春来踏雪觅芳踪 阅读(558) 评论(0) 推荐(0)