
并发编程
文章平均质量分 62
jxluoix
能够自己独立开发中小型的软件系统;
对工作态度认真、执着、诚恳;勇于专研、探索、创新;
接受新事物快、见识宽广.
展开
-
线程安全
线程安全: 多个线程在访问一个对象或执行一个过程时能无状态的,或有状态时进行同步的、或有序的、或隔离的执行,返回正确结果。 ======================= 这个是 (仅限) 我个人对线程安全的理解 和 定义。 这个定义刻意抛开...2016-09-06 13:53:17 · 86 阅读 · 0 评论 -
Java Unsafe-unpark操作
park/unpark操作 这两个操作通常配合在一起使用,park操作用于阻塞当前线程,unpark用于使阻塞在park操作代码处的线程退出阻塞。 unpark操作该方法是一个native方法:public native void unpark(Object thread);该方法实现unsafe.cpp在\hotspot\src\share\vm...原创 2016-09-29 00:09:55 · 1013 阅读 · 0 评论 -
Java Thread
Java除了可以通过实现java.lang.Runnable接口创建线程,还可以继承java.lang.Thread类。和实现java.lang.Runnable接口创建线程需要实现run方法一样,通过继承java.lang.Thread类来创建线程也需要重写run方法。官方的一个例子:class PrimeThread extends Thread {long minPri...原创 2016-09-30 01:05:23 · 278 阅读 · 0 评论 -
内核线程、轻量级进程、用户线程
内核线程内核线程需要系统内核支持,只有系统内核支持这种线程才能谈内核线程,内核线程只运行在内核态,不受用户态上下文的拖累,内核线程只能由系统内核管理,像普通进程一样被调度。支持多线程的内核称为多线程内核。内核线程可以在系统范围内竞争处理器资源,唯一使用的资源是内核栈和上下文切换时保持寄存器的空间。轻量级进程轻量级进程(LWP, Light-Weight Process)也是一种...原创 2016-09-30 01:08:32 · 223 阅读 · 0 评论 -
Java Thread 启动线程
Java Thread(java.lang.Thread)类提供了一个启动线程的方法。该方法是这样的:public synchronized void start() 该方法调用了一个native方法,通过这个native方法来启动线程,这个本地方法声明如下:private native void start0();该方法注册的对应实现为JVM_St...原创 2016-09-30 01:08:53 · 264 阅读 · 0 评论 -
MSI (缓存一致性协议)
MSI(缓存一致性协议) 目录 在多处理器系统中,MSI(Modified-Shared-Invalid)是一个最基本的缓存一致性协议。缓存中的每一个块(block)包括3中状态:Modified(M,已修改)、Shared(S,共享)、Invalid(I,无效)。Modified表示缓存中的块(block)已被修改。这时,缓存中的数据和后端存储(如,内...2016-10-03 21:32:27 · 1764 阅读 · 0 评论 -
Lock-free vs. wait-free concurrency
There are two types of non-blocking thread synchronization algorithms - lock-free, and wait-free. https://rethinkdb.com/blog/lock-free-vs-wait-free-concurrencyhttps://en.wikipedia.org/wiki/Non-blo...2016-10-09 21:44:59 · 131 阅读 · 0 评论 -
Blocking vs Starvation-Free vs Obstruction-Free vs Lock-Free vs Wait-Free...
Blocking vs Starvation-Free vs Obstruction-Free vs Lock-Free vs Wait-Free vs Wait-Free Bounded vs Wait-Free Population Oblivious Blocking: Starvation-Free: Obstruction-Free: Lock-Fre...2016-10-09 22:54:30 · 319 阅读 · 0 评论 -
Tardis(A new memory coherence protocol,一种新的缓存一致性协议)
Tardis(A new memory coherence protocol,一种新的缓存一致性协议) 目录 Abstract—A new memory coherence protocol, Tardis, is proposed. Tardis uses timestamp counters representing logical timeas well ...2016-10-11 11:31:08 · 370 阅读 · 0 评论 -
Nonblocking Concurrent Objects with Condition Synchronization
Nonblocking Concurrent Objects with Condition Synchronization", by W. N. Scherer III and M. L. Scott. 18th Annual Conf. on Distributed Computing, Oct. 2004 http://www.cs.rochester.edu/u/scott/s...原创 2016-12-28 16:39:26 · 192 阅读 · 0 评论 -
Java Unsafe-park操作
park/unpark操作这两个操作通常配合在一起使用,park操作用于阻塞当前线程,unpark用于使阻塞在park操作代码处的线程退出阻塞。 park操作该方法是一个native方法:public native void park(boolean isAbsolute, long time);该方法实现unsafe.cpp在\hotspot\src\sh...原创 2016-09-29 00:06:45 · 1722 阅读 · 2 评论 -
Java Unsafe
Unsafe很强大,提供了一组底层(low-level)、unsafe的操作 park/unpark操作 CAS操作 Lock/Unlock操作 创建实例但不初始化 加载类 对象成员变量偏移量 类成员变量偏移量 类成员变量基准地址 直接内存操作 对象成员偏移量操作 ...2016-09-28 01:09:23 · 86 阅读 · 0 评论 -
java synchronizer
java.util.concurrent.locks.AbstractOwnableSynchronizer java.util.concurrent.locks.AbstractQueuedSynchronizer java.util.concurrent.CountDownLatch.Sync java.util.concurrent.FutureTask.S...原创 2016-09-21 09:31:36 · 121 阅读 · 0 评论 -
Clojure atom
•atom(atom x) (atom x & options) 创建并返回一个atom原子变量,初始化为x值,同时还可以指定0个或多个可选选项,多个可选选项顺序不分先后。 可选选项: :meta metadata-map 元数据,map结构:validator validate-fn 验证器,函数 如果指定了:meta,将指...原创 2016-09-23 00:23:10 · 218 阅读 · 0 评论 -
Java ConcurrentHashMap Segment
Java并发编程包中提供的支持并发编程环境下的Map实现ConcurrentHashMap,并发编程通常是在多线程的环境下,需要保证类是线程安全的,ConcurrentHashMap通过Segment来分段,Segment继承了ReentrantLock类,因此支持加锁同步,通过这种方式来保证线程安全。同时通过这种分段的方式,减少每次操作map时都需要执行同步操作而必须阻塞从而无法继续执行的可...原创 2016-09-24 01:04:05 · 411 阅读 · 0 评论 -
Java CountDownLatch 实例
package com.java; import java.util.ArrayList;import java.util.List;import java.util.concurrent.CountDownLatch; abstract class AbstractSql {public abstract void execute();} class ...原创 2016-09-24 01:04:24 · 130 阅读 · 0 评论 -
Java CountDownLatch
CountDownLatch是Java并发包中用于并发编程的同步辅助类。用于允许一个或多个线程等待其他线程中一组操作执行完成,在其他线程中的这组操作执行完成之前,等待的线程将阻塞无法继续执行;或者等待的时间到了才能继续执行;或者等待的线程被中断。 CountDownLatch构造:public CountDownLatch(int count)在构造CountDo...原创 2016-09-24 01:07:44 · 82 阅读 · 0 评论 -
Java AQS
java.util.concurrent.locks.AbstractQueuedSynchronizer原创 2016-09-24 01:08:31 · 168 阅读 · 0 评论 -
Java中自带CLH实现
java.util.concurrent.locks.AbstractQueuedSynchronizerjava.util.concurrent.locks.AbstractQueuedSynchronizer.Node原创 2016-09-27 16:11:42 · 219 阅读 · 0 评论 -
Java中CAS的应用
Java中用到CAS的地方很多,基本上用到sun.misc.Unsafe这个类的地方都应用了CAS。该类在jdk\src\share\classes\sun\misc目录下。在java.util.concurrent.atomic包中那些Atomic*,如java.util.concurrent.atomic.AtomicInteger,java.util.concurrent.atomi...原创 2016-09-28 00:11:53 · 260 阅读 · 0 评论 -
Java Unsafe-如何得到Unsafe
Unsafe(sun.misc.Unsafe)是jdk中自带的一个类,因为是在sun.misc包下,所以一般也不建议直接使用,同时Unsafe提供了一组底层(low-level)、unsafe的操作。Unsafe类注释中也有这样一段描述:虽然该类及所有方法都是公开的,但使用该类是有限的,因为只有受信任的代码才能获得它的实例。 如何得到Unsafe@Caller...2016-09-28 00:16:36 · 627 阅读 · 0 评论 -
为什么我们总是避开不了锁?
为什么我们总是避开不了锁?2017-07-17 17:24:12 · 122 阅读 · 0 评论