![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA
文章平均质量分 82
Pslydhh
能力者
展开
-
Java Thread&Concurrency(8): 深入理解CompletionService接口及其实现
/** * FutureTask extension to enqueue upon completion */ private class QueueingFuture extends FutureTask { QueueingFuture(RunnableFuture task) { super(task, null);原创 2014-06-12 16:27:54 · 748 阅读 · 0 评论 -
Java Thread&Concurrency(15): 深入理解ScheduledThreadPoolExecutor及其实现原理
ScheduledExecutorService通过继承ExecutorService提供了原创 2014-07-28 23:43:31 · 1783 阅读 · 0 评论 -
Java Thread&Concurrency(1): 深入理解Fork-Join并发执行框架
public void execute(Runnable task) { if (task == null) throw new NullPointerException(); ForkJoinTask job; if (task instanceof ForkJoinTask) // avoid re-wrap原创 2014-07-29 13:28:17 · 2951 阅读 · 2 评论 -
Java Thread&Concurrency(0):JUC
这个系列的文章只是我学习JDK中的并发包的一些记录,原创 2014-07-10 12:01:10 · 685 阅读 · 0 评论 -
Bug:LinkedTransferQueue的数据暂失和CPU爆满
前几天读LinkedTransferQueue(以下简称ltq)的源码,想加深下对松弛型双重队列的理解,无意中发现了这个问题:),经过仔细检查后确认了这是个bug,存在于JDK1.7.0_40和刚发布的JDK8中,去google和oracle官方似乎也没有搜索到这个问题。重现bug:先来重现下这个bug,由于对并发线程的执行顺序预先不能做任何假设,所以很可能根本就不存在所谓的重现错误的“测原创 2014-04-08 12:57:03 · 1080 阅读 · 0 评论 -
RocketMQ:索引源码分析
RocketMQ是阿里开源的一款高性能高吞吐的消息中间件,我们来研究下它是如何实现的,重点关注索引。原创 2017-07-10 17:53:12 · 1117 阅读 · 0 评论 -
JVM:锁实现(synchronized&JSR166)行为分析和相关源码
JVM中有这样一段注释:// The base-class, PlatformEvent, is platform-specific while the ParkEvent is// platform-independent. PlatformEvent provides park(), unpark(), etc., and// is abstract -- that is, a Pl原创 2017-06-28 11:35:46 · 2750 阅读 · 1 评论 -
Java实现临界区:经典并发控制回顾
只要有一定的内存order保证,不通过比较并交换(CAS)那些需要硬件支持的原子操作,能不能实现一个互斥的临界区?答案是:能。计算机先驱djkstra,50多年前的这篇经典paper中就提出了解决方案。并且自这以后开启了如何通过一般编程语言实现并发控制的 研究。这里的假设我们有N个线程,代表序号分别为1-N,一个公共变量k用于辅助指示当前占有临界区的线程。临界区是critical原创 2017-06-28 11:31:48 · 1319 阅读 · 0 评论 -
并发编程中的一致性问题:ForkJoinPool调用shutdown的bug.(jdk8&jdk9)
ForkJoinPool调用shutdown从而终止整个并发执行框架。包括取消所有队列中已有的任务,终止所有的工作线程。原创 2017-09-16 15:58:30 · 3416 阅读 · 1 评论 -
Java Thread&Concurrency(13): 深入理解ConcurrentLinkedQueue及其实现原理
ConcurrentLinkedQueue原创 2014-07-22 12:51:35 · 565 阅读 · 0 评论 -
Java Thread&Concurrency(11): 深入理解ThreadPoolExecutor及其实现原理
/** * Executes the given task sometime in the future. The task * may execute in a new thread or in an existing pooled thread. * * If the task cannot be submitted for execution, ei原创 2014-06-12 16:41:35 · 731 阅读 · 0 评论 -
Bug:StampedLock的中断问题导致CPU爆满
试试原创 2014-06-27 13:36:04 · 1198 阅读 · 0 评论 -
Bug:ForkJoinTask的异常获取错误
这是个低级错误,本意是在获取异常时,假如当前xianc原创 2014-06-27 15:08:07 · 1079 阅读 · 0 评论 -
Java Thread&Concurrency(7): 深入理解Callable/Future(FutureTask)接口及其实现
public void run() { if (state != NEW || !UNSAFE.compareAndSwapObject(this, runnerOffset, null, Thread.currentThread())) return;原创 2014-06-12 16:25:38 · 882 阅读 · 0 评论 -
Java Thread&Concurrency(3): 深入理解SynchronousQueue实现原理
/** * Puts or takes an item. */ @SuppressWarnings("unchecked") E transfer(E e, boolean timed, long nanos) { /* Basic algorithm is to loop trying to take e原创 2014-06-12 15:58:35 · 921 阅读 · 0 评论 -
Java Thread&Concurrency(14): 深入理解条件队列(Condition)及其实现原理
ReentrantLock原创 2014-07-27 11:44:27 · 973 阅读 · 0 评论 -
Java Thread&Concurrency(12): 深入理解AbstractExecutorService及其实现原理
dd原创 2014-07-22 12:48:08 · 1092 阅读 · 0 评论 -
Java Thread&Concurrency(2): 深入理解ConcurrentSkipListMap实现原理
/** * Main insertion method. Adds element if not present, or * replaces value if present and onlyIfAbsent is false. * @param key the key * @param value the value that must be asso原创 2014-06-12 13:35:07 · 884 阅读 · 0 评论 -
Java Thread&Concurrency(16): 深入理解ArrayBlockingQueue及其实现原理
ArrayBlockingQueue原创 2014-07-29 12:32:44 · 690 阅读 · 0 评论 -
Java Thread&Concurrency(4): 深入理解Exchanger实现原理
/** * Exchange function used until arenas enabled. See above for explanation. * * @param item the item to exchange * @param timed true if the wait is timed * @param ns if time原创 2014-06-12 16:05:21 · 2590 阅读 · 0 评论 -
Java Thread&Concurrency(5): 深入理解Phaser实现原理
public int arriveAndAwaitAdvance() { // Specialization of doArrive+awaitAdvance eliminating some reads/paths final Phaser root = this.root; for (;;) { long s = (roo原创 2014-06-12 16:10:44 · 1852 阅读 · 0 评论 -
LockFreeHashMap:无阻塞代码技巧
10年前,cliff click博士就为关联数据结构ConcurrentHashMap给出了一个采用open Address的无阻塞实现(NonBlockingHashMap)。其中为了减少线程之间执行顺序的依赖而采用的算法充满技巧性。这个算法宣称是无锁,几乎可以保证任何时候停止某个特定线程都不会导致整体进程的停止(极端情况下,这一点还是会阻塞整个进程的)。本文尝试详细地分析其中的完整代码,从原创 2017-06-30 17:01:21 · 1168 阅读 · 0 评论