多线程与并发
文章平均质量分 80
iteye_19607
这个作者很懒,什么都没留下…
展开
-
Atomic并发API简述
一.Atomic包,原子性。事实上,此包中的类可将volatile值、字段和数组元素的概念扩展到那些提供原子性操作的类上,主要方式为 compareAndSet(expectedValue,updateValue),即CAS思想来确保内存一致性操作。expectedValue即当前值,updateValue为需要被更新的值,如果内存中的值为expectedVaue则更新,否则返回false...原创 2013-04-04 10:34:36 · 497 阅读 · 0 评论 -
Java并发锁控制API详解
一.Lock接口(java.util.concurrent.locks):void lock():获取锁,阻塞方式;如果资源已被其他线程锁定,那么lock将会阻塞直到获取锁,锁阻塞期间不受线程的Interrupt的影响,在获取锁成功后,才会检测线程的interrupt状态,如果interrupt=true,则抛出异常。unlock():释放锁tryLock():尝试获取锁,并发环...原创 2013-04-04 10:34:47 · 293 阅读 · 0 评论 -
JAVA并发数据结构详解
前言:这是一场艰苦的旅行....请首先参考:http://shift-alt-ctrl.iteye.com/blog/1839142一.BlockingDeque阻塞双端队列(线程安全):注意ArrayDeque和LinkedList仅仅扩展了Deque,是非阻塞类型的双端队列。BlockingQueue单向队列,其内部基于ReentrantLock + Condition来控...原创 2013-04-06 09:18:07 · 199 阅读 · 0 评论 -
CompletionService简介(异步)
一.CompletionService接口提供了可以操作异步任务的功能,其唯一实现的API为ExecutorCompletionService。此API只是可以获取异步任务执行的结果,它不是ExecutorService。其有5个核心方法:Future<V> poll():同步操作,获取并移除第一已经完成的任务,否则返回null。Future<V> pol...原创 2013-04-06 09:18:22 · 313 阅读 · 0 评论 -
Executors工具类介绍
Executors是一个工具类,提供了大量的静态方法,方便我们在线程池中使用。 static Callable<Object> callable(Runnable task):将runnable接口实例转换成Callable接口实例.static ExecutorService newCacheThreadPool():创建一个“按需创建”的线程池,此前创建的线程可用时将...原创 2013-04-06 09:18:33 · 377 阅读 · 0 评论 -
ExecutorService(任务调度器)详解
前言:这是一次艰苦的旅行...一.ExecutorService:它也是一个接口,它扩展自Executor接口,Executor接口更像一个抽象的命令模式,仅有一个方法:execute(runnable);Executor接口简单,但是很重要,重要在这种设计的模式上。。 ExecutorService在Executor的基础上增加了“service”特性的方法:shutd...原创 2013-04-06 09:18:45 · 834 阅读 · 0 评论 -
Semaphore释疑
java api中Semaphore(信号量),用于控制有限资源的并发访问。API也非常好理解,不过有几个需要注意的地方:Semaphore是纯粹的应用级控制“锁”,使用简单的volitale变量作为信号量信息,通过acquire、release、reduce等显式的可以修改此信号量数字。它并没有维护任何锁,也不是控制reentrant的,它不会维护信号和thread的关系。Se...原创 2013-04-06 09:18:59 · 197 阅读 · 0 评论