java concurrent
czj4451
这个作者很懒,什么都没留下…
展开
-
ExecutorService 分析
[code="java"] public interface ExecutorService extends Executor { // 优雅地关闭:先前提交的任务会继续执行完成,但不接受新的任务。 // 对于已关闭的ExecutorService没有影响。 void shutdown(); // 强行关闭:试图停止所有正在执行的任务,挂起等待执行的任...原创 2013-03-26 18:37:13 · 109 阅读 · 0 评论 -
ScheduledExecutorService 源码分析
[code="java"] public interface ScheduledExecutorService extends ExecutorService { // 创建在指定延迟后执行且只运行一次的的任务 public ScheduledFuture schedule(Runnable command, long delay, TimeUnit unit...原创 2013-03-27 18:08:42 · 208 阅读 · 0 评论 -
LinkedBlockingDeque 源码分析
LinkedBlockingDeque是LinkedList通过ReentrantLock来实现线程安全以及阻塞,大部分方法都加了锁。 [size=small]1. 构造方法[/size] [code="java"] public LinkedBlockingDeque() { this(Integer.MAX_VALUE); } ...原创 2013-04-01 16:04:41 · 111 阅读 · 0 评论 -
AbstractQueuedSynchronizer(4)
Condition是一个条件功能的class,必须放在Lock代码块内,如同wait,notify方法放在synchronized块一样。 Condition的(await,signal)与object的(wait,notify)相比,提供了更为通用和灵活的解决方案,可以让多种条件的线程之间相互通信。 Condition的定义: [code="java"] public i...原创 2012-04-13 12:58:19 · 76 阅读 · 0 评论 -
java concurrent (1) - 传统线程互斥和通信
[size=small]线程互斥是一次只有一个线程执行某段代码,保证数据的一致性。线程通信是指通过notify或notifyAll来唤醒在wait某个对象锁的线程。实现方式是通过synchronized关键字声明。[/size] [size=medium]1. 如果同步代码块在对象方法中,可以实例化一个Object来作为lock的对象,或者用this关键字表示lock这个对象:[/size]...原创 2012-04-19 13:40:49 · 76 阅读 · 0 评论 -
AtomicInteger 使用
Java中,i++和++i都不是原子操作,多线程环境下需要使用synchronized关键字。JDK1.5的java.util.concurrent.atomic包提供了原子操作类,通过Unsafe类调native方法来实现。 这里以AtomicInteger为例: [b]内部存储[/b] 维护了一个整型值,其初始值为0。考虑到多线程操作,使用volatile来保证其可见...原创 2014-08-02 22:57:39 · 239 阅读 · 0 评论 -
AtomicReferenceFieldUpdater 使用
[b]AtomicReferenceFieldUpdater[/b]位于[b]java.util.concurrent.atomic[/b]包中,作用是[color=red]原子性地更新对象属性[/color]。 以原子性更新Cat类的name属性为例: name属性需要保持[color=red]可见性[/color],且[color=red]不是私有变量[/color]。 [cod...原创 2014-11-19 22:13:43 · 291 阅读 · 0 评论