Java Thread&Concurrency
文章平均质量分 83
Pslydhh
能力者
展开
-
Java Thread&Concurrency(13): 深入理解ConcurrentLinkedQueue及其实现原理
ConcurrentLinkedQueue原创 2014-07-22 12:51:35 · 579 阅读 · 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 · 939 阅读 · 0 评论 -
Java Thread&Concurrency(14): 深入理解条件队列(Condition)及其实现原理
ReentrantLock原创 2014-07-27 11:44:27 · 1038 阅读 · 0 评论 -
Java Thread&Concurrency(9): 深入理解StampedLock及其实现原理
/** * Non-exclusively acquires the lock, blocking if necessary * until available. * * @return a stamp that can be used to unlock or convert mode */ public long readLock()原创 2014-06-12 16:30:02 · 3908 阅读 · 2 评论 -
Java Thread&Concurrency(0):JUC
这个系列的文章只是我学习JDK中的并发包的一些记录,原创 2014-07-10 12:01:10 · 697 阅读 · 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 · 2805 阅读 · 1 评论 -
Java实现临界区:经典并发控制回顾
只要有一定的内存order保证,不通过比较并交换(CAS)那些需要硬件支持的原子操作,能不能实现一个互斥的临界区?答案是:能。计算机先驱djkstra,50多年前的这篇经典paper中就提出了解决方案。并且自这以后开启了如何通过一般编程语言实现并发控制的 研究。这里的假设我们有N个线程,代表序号分别为1-N,一个公共变量k用于辅助指示当前占有临界区的线程。临界区是critical原创 2017-06-28 11:31:48 · 1327 阅读 · 0 评论 -
Java多线程:内存可见性
Java中对于volatile变量,通俗点说可以把它看做多线程之间分享的共享内存,可见性是立即的。实际上它分成了两部分,volatile write和volatile read。由于Unsafe提供了getXXXVolatile和putXXXVolatile接口。所以这样一来Java中对于能够共享的变量,至少有四种访问方式:普通写、普通读、putXXXVolatile、getXXXVola原创 2017-07-01 03:19:22 · 936 阅读 · 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 · 1876 阅读 · 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 · 2620 阅读 · 0 评论 -
Java Thread&Concurrency(16): 深入理解ArrayBlockingQueue及其实现原理
ArrayBlockingQueue原创 2014-07-29 12:32:44 · 699 阅读 · 0 评论 -
Bug:StampedLock的中断问题导致CPU爆满
试试原创 2014-06-27 13:36:04 · 1229 阅读 · 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 · 3022 阅读 · 2 评论 -
Java Thread&Concurrency(10): 深入理解ThreadLocal及其实现原理
/** * Returns the value in the current thread's copy of this * thread-local variable. If the variable has no value for the * current thread, it is first initialized to the value return原创 2014-06-12 16:35:24 · 960 阅读 · 0 评论 -
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 · 761 阅读 · 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 · 744 阅读 · 0 评论 -
Bug:ForkJoinTask的异常获取错误
这是个低级错误,本意是在获取异常时,假如当前xianc原创 2014-06-27 15:08:07 · 1106 阅读 · 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 · 899 阅读 · 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 · 892 阅读 · 0 评论 -
Java Thread&Concurrency(15): 深入理解ScheduledThreadPoolExecutor及其实现原理
ScheduledExecutorService通过继承ExecutorService提供了原创 2014-07-28 23:43:31 · 1803 阅读 · 0 评论 -
LockFreeHashMap:无阻塞代码技巧
10年前,cliff click博士就为关联数据结构ConcurrentHashMap给出了一个采用open Address的无阻塞实现(NonBlockingHashMap)。其中为了减少线程之间执行顺序的依赖而采用的算法充满技巧性。这个算法宣称是无锁,几乎可以保证任何时候停止某个特定线程都不会导致整体进程的停止(极端情况下,这一点还是会阻塞整个进程的)。本文尝试详细地分析其中的完整代码,从原创 2017-06-30 17:01:21 · 1192 阅读 · 0 评论