随笔分类 -  Java-并发

摘要:Executors java.util.concurrent下的Executors工具类提供了如下几个方法,代码如下: /** * Creates a single-threaded executor that can schedule commands * to run after a given 阅读全文
posted @ 2021-08-18 22:56 时空穿越者 阅读(475) 评论(0) 推荐(0) 编辑
摘要:一、饱和策略(线程池任务拒绝策略) ThreadPoolExecutor构造函数的RejectedExecutionHandler handler参数表示当提交的任务数超过maxmumPoolSize与workQueue之和时,任务会交给RejectedExecutionHandler来处理,此处我 阅读全文
posted @ 2021-08-17 10:03 时空穿越者 阅读(1045) 评论(0) 推荐(0) 编辑
摘要:一、线程池的属性 二、详解ThreadPoolExecutor 上文提到可以通过显式的ThreadPoolExecutor构造函数来构造特定形式的线程池,ThreadPoolExecutor是java.util.concurrent包以内部线程池的形式对外提供线程池管理、线程调度等服务,此处我们来了 阅读全文
posted @ 2021-08-16 21:04 时空穿越者 阅读(396) 评论(0) 推荐(0) 编辑
摘要:延时队列 DelayQueue是一个支持延时获取元素的使用优先级队列实现的无界的阻塞队列。 在创建元素时可以指定多久才能从队列中获取当前元素,只有在延迟期满时才能从队列中提取元素。 类图如下: DelayQueue的定义以及构造函数如下: public class DelayQueue<E exte 阅读全文
posted @ 2021-08-15 20:29 时空穿越者 阅读(358) 评论(0) 推荐(0) 编辑
摘要:优先级阻塞队列 PriorityBlockingQueue是一个支持优先级排序的无界阻塞队列。 Note: PriorityBlockingQueue并不会阻塞生产者,而只是在没有可消费的数据时阻塞消费者;因此使用的时候需要特别注意,生产者生产数据的速度绝对不能快于消费者消费数据的速度,否则时间一长 阅读全文
posted @ 2021-08-15 11:11 时空穿越者 阅读(433) 评论(0) 推荐(0) 编辑
摘要:初识LinkedBlockingQueue LinkedBlockingQueue是线程安全的有界阻塞队列,其底层使用单向链表实现。 其类图如下: 其构造函数如下: /** * Creates a {@code LinkedBlockingQueue} with a capacity of * {@ 阅读全文
posted @ 2021-08-14 20:07 时空穿越者 阅读(597) 评论(0) 推荐(0) 编辑
摘要:初始ConcurrentLinkedQueue ConcurrentLinkedQueue 是线程安全的无界非阻塞队列,其底层使用单向链表实现,对于入队和出队操作使用 CAS 来实现线程安全。 其类图如下: 从类图可以发现其与其它阻塞队列的一个明显区别是,ConcurrentLinkedQueue没 阅读全文
posted @ 2021-08-14 16:49 时空穿越者 阅读(511) 评论(0) 推荐(0) 编辑
摘要:StampedLock 通常情况下,使用同步锁的代码如下: synchronized(this){ // do operation } Java6提供的ReentrantReadWriteLock使用方式如下: rwlock.writeLock().lock(); try { // do opera 阅读全文
posted @ 2021-08-13 21:12 时空穿越者 阅读(113) 评论(0) 推荐(0) 编辑
摘要:ReadWriteLock Java中的ReadWriteLock是什么? 一般而言,读写锁是用来提升并发程序性能的锁分离技术的成果,Java中的ReadWriteLock是Java5中新增的一个接口,提供了readLock和writeLock两种锁机制。 一个ReadWriteLock维护一对关联 阅读全文
posted @ 2021-08-13 19:25 时空穿越者 阅读(360) 评论(0) 推荐(0) 编辑
摘要:AQS是一个FIFO的双向队列,其内部通过head和tail记录队首和队尾元素,队列元素的类型为 Node。 Node Node 中的 thread变量用来存放进入 AQS 队列的线程; Node 中的 SHARED 用来标记该线程是获取共享资源时被阻塞挂起后放入 AQS 队列的;EXCLUSIVE 阅读全文
posted @ 2021-08-12 08:46 时空穿越者 阅读(76) 评论(0) 推荐(0) 编辑
摘要:CopyOnWriteArrayList java.util.concurrent.CopyOnWriteArrayList是一个线程安全的 ArrayList,其修改操作是在底层的一个复制的数组(快照)上进行的,即用了写时复制策略。 其定义如下: public class CopyOnWriteA 阅读全文
posted @ 2021-08-11 08:48 时空穿越者 阅读(230) 评论(0) 推荐(0) 编辑
摘要:CAS CAS即CompareandSwap,其具体的意思是比较并交换。 它是JDK提供的非阻塞原子性操作,它通过硬件保证了“比较、更新”操作的原子性。 Unsafe JDK 里的 Unsafe 类提供了一系列的 compareAndSwap*方法,代码文件路径如下: 其定义了如下几个 compar 阅读全文
posted @ 2021-08-10 08:48 时空穿越者 阅读(212) 评论(0) 推荐(0) 编辑
摘要:java内存模型 Java作为平台无关性语言,JSL(java语言规范)定义了一个统一的内存管理模型JMM(Java Memory Model),JMM屏蔽了底层平台内存管理细节。 JMM规定了JVM有主内存(Main Memory)和工作内存(Working Memory)。 主内存 即java堆 阅读全文
posted @ 2021-08-09 11:30 时空穿越者 阅读(66) 评论(0) 推荐(0) 编辑
摘要:初识lnheriitableThreadLocal lnheriitableThreadLocal继承自 ThreadLocal,其提供了一个特性,让子线程可以访问在父线程中设置的本地变量。 代码示例 public static void main(String[] args) { ThreadLo 阅读全文
posted @ 2021-08-09 09:18 时空穿越者 阅读(91) 评论(0) 推荐(0) 编辑
摘要:初识ConcurrentHashMap 针对并发容器中的ConcurrentHashMap,《java并发编程实战》一书有如下这样一段文字: ConcurrentHashMap的定义如下: public class ConcurrentHashMap<K,V> extends AbstractMap 阅读全文
posted @ 2021-08-01 16:46 时空穿越者 阅读(80) 评论(0) 推荐(0) 编辑
摘要:一、初识Exchanger 注意: 从上文描述,我们知道Exchanger用于在成对出现的线程之间(两个线程共有一个Exchanger) 二、示例 三、详解Exchanger 四、参考资料 (1)https://docs.oracle.com/javase/7/docs/api/java/util/ 阅读全文
posted @ 2021-07-10 10:25 时空穿越者 阅读(134) 评论(0) 推荐(0) 编辑
摘要:一、初识Semaphore 小结: A、可以将信号量可视化为一个计数器,它可以递增或递减。 B、从概念上讲,信号量维护了一个许可集合,Semaphore对可用的许可进行计数。 C、当计数器的值为0时,它能够使线程等待。 D、Semaphore 的计数器是不可以自动重置的。 二、示例 The thre 阅读全文
posted @ 2021-07-10 09:20 时空穿越者 阅读(594) 评论(0) 推荐(0) 编辑
摘要:一、初识CyclicBarrier 二、示例 示例一 应用场景: 在某种需求中,比如一个大型的任务,常常需要分配很多子任务去执行,只有当所有子任务都执行完成时候,才能执行主任务,这时候就可以选择CyclicBarrier了。 示例: package com.test; import java.uti 阅读全文
posted @ 2021-07-10 08:02 时空穿越者 阅读(198) 评论(0) 推荐(0) 编辑
摘要:一、初识ThreadLocal ThreadLocal实例通常作为静态的私有的(private static)字段出现在一个类中,这个类用来关联线程。 A、当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供了一个独立初始化的变量副本,所以每一个线程都可以独立地改 阅读全文
posted @ 2016-04-15 20:50 时空穿越者 阅读(2369) 评论(0) 推荐(0) 编辑
摘要:一、初识CountDownLatch (1)概述 (2)应用场景 Application’s main thread wants to wait, till other service threads which are responsible for starting framework serv 阅读全文
posted @ 2016-04-15 19:20 时空穿越者 阅读(3792) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示