张伯毅的专栏

人生就是一道证明题,证明我们的存在不是偶然....

ScheduledThreadPoolExecutor

ScheduledThreadPoolExecutor 是一个 可以 在指定一定延迟时间 后或者定时进行 任务调度执行的线程池。 ...

2019-07-14 22:14:56

阅读数 107

评论数 0

FutureTask 概览

概念 FutureTask一个可取消的异步计算,FutureTask 实现了Future的基本方法,提空 start cancel 操作,可以查询计算是否已经完成,并且可以获取计算的结果。结果只可以在计算完成之后获取,get方法会阻塞当计算没有完成的时候,一旦计算已经完成,那么计算就不能再次启动...

2019-07-14 10:08:33

阅读数 17

评论数 0

ThreadPoolExecutor 概述 [ 二 ]

ThreadPoolExecutor 的实现 实际是一个生产 消费模型, 当用户添加任务到线程池时相当于生产 者生产元素, workers 线程工作集中的线程直接执行任务或者 从任务队列里面获取任务时则相当于消费者消费元素。 程池巧妙地使用 一个 Integer类型的原子变量来记录线程池状态和线...

2019-07-13 17:57:18

阅读数 18

评论数 0

ThreadPoolExecutor 概述 [ 一 ]

概述 线程池主要解决两个问题 : 一是当执行大量异步任务时线程池能够提供较好的性能 。 在不使用线程池时,每当需要执行异步任务时直接 new 一个线程来运行,而线程的创建和 销毁是需要开销的。 线程池里面的线程是可复用的,不需要每次执行异步任务时都重新创 建和销毁线程 。 二是线程池也提供了...

2019-07-13 17:23:10

阅读数 20

评论数 0

JAVA 线程池ThreadPoolExecutor的五种状态

在 线程池成员变量 ctl 是一个 Integer的原子变量,用来记录线程池状态和 线程池中线程个数,类似于 ReentrantReadWriteLock 使用 一个变量来保存两种信息。 Integer 类型是 32 位二进制表示,则其中高 3 位用来表示线程池状态,后面 29 位用来记 录线程...

2019-07-13 16:03:06

阅读数 132

评论数 0

DelayQueue 概览

DelayQueue 内部使用 PriorityQueue 存放数据,使用 ReentrantLock 实现 线程同步 。另 外,队列里面的元素要实现 Delayed 接口,由于每个元素都有一个过期时间 , 所以要实现获知当前元素还剩下多少时 间就过期了的接口,由于内部使用优先级队列来实 现,所以...

2019-07-13 11:23:15

阅读数 10

评论数 0

PriorityBlockingQueue 概览

PriorityBlockingQueue 是带 优 先级的无界 阻塞队列,每次出队都返回优先级最高或者 最低的元素。其内部是使用平衡二叉树堆实现的,所以直接遍历队列元素不保证有序。默 认使用对象的 compareTo 方法提供比较规则,如果你需要自定义比较规则则可以自定义 comparators...

2019-07-13 11:06:47

阅读数 8

评论数 0

ArrayBlockingQueue 概览

底层使用数组实现. 常量代码: /** The queued items */ final Object[] items; /** items index for next take, poll, peek or remove */ int takeIndex; ...

2019-07-12 21:09:28

阅读数 12

评论数 0

LinkedBlockingQueue 和 LinkedBlockingDeque 概览

LinkedBlockingQueue和LinkedBlockingDeque,两个都是队列,只不过前者只能一端出一端入,后者则可以两端同时出入,并且都是结构改变线程安全的队列。其实两个队列从实现思想上比较容易理解,有以下特点: 链表结构(动态数组) 通过ReentrantLock实现锁 利用...

2019-07-12 20:52:20

阅读数 9

评论数 0

ConcurrentLinkedQueue 概览

ConcurrentLinkedQueue 是线程安全的无界非 阻塞队列,其底层数据结 构使用单向链表实现, 对于入队和出队操作使用 CAS 来实现线程安全 。 ConcurrentLinkedQueue 内部的队列 使用单 向链表方式实现,其中有两个 volatile 类型 的 Node...

2019-07-12 20:34:36

阅读数 11

评论数 0

抽象同步队列 AQS 三部曲 [ 三 ]

概述 AQS 有个内 部类 ConditionObject, 用来结合锁实现线程同步 。 ConditionObject 可以 直接访问 AQS对象内部的变量,比如 state状态值和 AQS 队列。 ConditionObject是条件 变量 , 每 个条件 变量对应 一 个 条 件队列 (单...

2019-07-12 16:35:21

阅读数 14

评论数 0

抽象同步队列 AQS三部曲 [ 二 ]

图解 加锁/解锁 流程图(点击, 放大看) 流程概述 -------------------------------获取资源------------------------------- 当一个线程调用 acquire(int arg)方法获取独占资源时,会首先使用 tryAc...

2019-07-12 10:41:02

阅读数 10

评论数 0

抽象同步队列 AQS三部曲 [ 一 ]

AbstractQueuedSynchronizer 抽象同步队列简称 AQS, 它是实现同步器的 基 础组件, 并发包中锁的底层就是使用 AQS 实现的 。 AQS是一个FIFO的双向队列,其内部通过节点head和tail记录队 首和队尾元素,队列元素的类型为 Node。 其中 Nod...

2019-07-12 10:27:52

阅读数 7

评论数 0

JAVA : ReentrantReadWritelock

ReentrantReadWriteLock采用读写分 离的策略,允许多个线程可以同时获取读锁 。 架构图 读写锁的内部维护了 一个 ReadLock 和一个 WriteLock,它们依赖 Sync 实现具体功能 。 而Sync继承自AQS,并且也提供了公平和非公平的实现。 下面只...

2019-06-27 18:09:18

阅读数 83

评论数 0

JAVA 可重入锁: ReentrantLock

概念 ReentrantLock重入锁,是实现Lock接口的一个类,也是在实际编程中使用频率很高的一个锁,支持重入性,表示能够对共享资源能够重复加锁,即当前线程获取该锁再次获取不会被阻塞。在java关键字synchronized隐式支持重入性, synchronized通过获取自增,释放自减的方...

2019-06-26 17:17:10

阅读数 26

评论数 0

Java CopyOnWriteArrayList 概述

CopyOnWriteArrayList是一个线程 安全的 ArrayList,对其进行的修改操作都是在底层的一个复制的数组(快照)上进行的 , 也就是使用了写时复制策略。 在 CopyOnWriteArrayList 的类图中,每个 CopyOnWriteArrayList 对象...

2019-06-26 14:17:30

阅读数 38

评论数 0

JDK 8 原子操作类 LongAdder

AtomicLong 通过 CAS 提供了非阻塞的原子性操作,相 比使用阻塞算法的 同步器来说它的性能己经很好了,但是 JDK 开发组并不满足于此 。 使用 AtomicLong 时, 在高并发下大量线程会同时去竞争更新 同→个原子变量,但是由于同时只有一个线程的 CAS 操作会成功,这就造成了大...

2019-06-26 11:21:21

阅读数 470

评论数 0

在linux系统中查看 缓存行 [ cacheline ] 的大小

linux系统中缓存行 [ cacheline ] 默认值: 64byte 为了解决计算机系统中主内存与 CPU 之间运行速度差问题,会在 CPU 与主内存之间 添加一级或者多级高速缓冲存储器( Cache)。这个 Cache 一般是被集成到 CPU 内部的, 所以也叫 CPU Cach...

2019-06-25 16:53:07

阅读数 77

评论数 0

Java 多线程并发线程基础

进程&线程 线程是进程中的一个实体,线程 本身是不会独立存在的 。 进程是代码在数据集合上的 一 次运行活动 , 是系统进行资源分配 和调度的基本单位, 线程则是进程的一个执行路径, 一个进程中至少有一个线程,进程中 的多个线程共享进程的资源。 操作系统在分配资源时是把资源分...

2019-06-25 16:37:40

阅读数 43

评论数 0

一张图理解JAVA 多线程创建

Java 中有三种线程创建方式, 实现 Runnable接口的 run方法, 继承 Thread类 并重写 run 的方法, 使用 FutureTask方式。

2019-06-25 11:46:47

阅读数 38

评论数 0

提示
确定要删除当前文章?
取消 删除