JUC包下的阻塞原语,所谓阻塞原语指的是JUC下所有对线程挂起的操作都是通过LockSupport来完成的。 基本操作 有点像wait notify机制,子线程调用park会被挂起,等待别的线程unpark才会接着park继续执行,且park的线程处于waiting状态。 中断 处于waiting状 ...
分类:
其他好文 时间:
2019-05-14 13:11:59
阅读次数:
122
DelayQueue是阻塞队列吗?
DelayQueue的实现方式?
DelayQueue主要用于什么场景?
分类:
编程语言 时间:
2019-04-29 12:42:03
阅读次数:
158
concurrent包下的很多框架实现基本都依赖于AQS ,而AQS底层依赖LockSupport ,LockSupport依赖Unsafe提供的能力进行加锁等操作 1.park() unpark() 内部基于互斥量机制 permit初始值为0 park():如果permit等于0 阻塞;如果per ...
分类:
其他好文 时间:
2019-02-04 12:56:30
阅读次数:
173
1. 线程让步: yield() yield()的作用是让步。它能让当前线程由“运行状态”进入到“就绪状态”,从而让其它具有相同优先级的等待线程获取执行权;但是,并不能保证在当前线程调用yield()之后,其它具有相同优先级的线程就一定能获得执行权;也有可能是当前线程又进入到“运行状态”继续运行! ...
分类:
编程语言 时间:
2018-11-10 17:58:40
阅读次数:
304
[TOC] LockSupport源码分析 LockSupport是Java6引入的一个工具类, 用于挂起和唤醒线程; LockSupport 通过提供park() 和 unpark() 方法实现阻塞线程和解除线程阻塞, 实现阻塞与解除阻塞是基于许可(permit), permit相当于一个信号量, ...
分类:
其他好文 时间:
2018-07-27 01:29:30
阅读次数:
311
参考链接:https://blog.csdn.net/vernonzheng/article/details/8288251 ReentrantLock 类 1.1 什么是reentrantlock java.util.concurrent.lock 中的 Lock 框架是锁定的一个抽象,它允许把锁 ...
分类:
编程语言 时间:
2018-06-29 14:01:53
阅读次数:
201
Phaser,阶段器,可作为一个可复用的同步屏障,与CyclicBarrier和CountDownLatch类似,但更强大。 ...
分类:
其他好文 时间:
2018-05-28 00:48:43
阅读次数:
218
我们说的AQS就是AbstractQueuedSynchronizer,他在java.util.concurrent.locks包下,这个类是Java并发的一个核心类。第一次知道有这个类是在看可重入锁ReentrantLock中,在ReentrantLock中有一个内部类Sync继承于Abstrac ...
分类:
编程语言 时间:
2018-04-13 19:06:16
阅读次数:
224
ReentrantLock在进行实例化时,可以通过构造函数的参数选择是否使用公平锁FairSync或者非公平锁NonfairSync,两者的区别比较简单,如果是公平锁则新来的线程会先检测同步队列中是否有等待的线程,如果有,则追加到同步队列尾,锁竞争过程强调的是有序进行,当然代价比较明显,线程切换会造 ...
分类:
其他好文 时间:
2018-04-13 17:49:24
阅读次数:
202
■ 前言 之前 LockSupport 那篇已经叙述了是线程阻塞工具类,其底层由 Unsafe 实现,即 park(), unpark() 方法,获取指针偏移量,并操纵内存。本篇主要介绍 Unsafe 的源码,看看底层到底做了什么。 ■ Unsafe 综述 作用: Unsafe是个后门类,封装了一些 ...
分类:
其他好文 时间:
2018-02-07 15:04:16
阅读次数:
317