随笔分类 -  并发编程

摘要:ReentrantLock是Java并发包中提供的一个可重入的互斥锁。ReentrantLock和synchronized在基本用法,行为语义上都是类似的,同样都具有可重入性。只不过相比原生的Synchronized,ReentrantLock增加了一些高级的扩展功能,比如它可以实现公平锁,同时也可 阅读全文
posted @ 2017-07-29 23:59 dreamcatcher-cx 阅读(8841) 评论(3) 推荐(6) 编辑
摘要:目录 1 基本实现原理 1.1 如何使用 1.2 设计思想 2 自定义同步器 2.1 同步器代码实现 2.2 同步器代码测试 3 源码分析 3.1 Node结点 3.2 独占式 3.3 共享式 4 总结 Java并发包(JUC)中提供了很多并发工具,这其中,很多我们耳熟能详的并发工具,譬如Reent 阅读全文
posted @ 2017-07-24 13:46 dreamcatcher-cx 阅读(51596) 评论(12) 推荐(19) 编辑
摘要:Java中的wait/notify/notifyAll可用来实现线程间通信,是Object类的方法,这三个方法都是native方法,是平台相关的,常用来实现生产者/消费者模式。先来我们来看下相关定义: wait() :调用该方法的线程进入WATTING状态,只有等待另外线程的通知或中断才会返回,调用 阅读全文
posted @ 2017-06-18 09:20 dreamcatcher-cx 阅读(3490) 评论(3) 推荐(2) 编辑
摘要:CopyOnWriteArrayList是Java并发包中提供的一个并发容器,它是个线程安全且读操作无锁的ArrayList,写操作则通过创建底层数组的新副本来实现,是一种读写分离的并发策略,我们也可以称这种容器为"写时复制器",Java并发包中类似的容器还有CopyOnWriteSet。本文会对C 阅读全文
posted @ 2017-05-21 15:11 dreamcatcher-cx 阅读(17495) 评论(5) 推荐(16) 编辑
摘要:ConcurrentHashMap是Java并发包中提供的一个线程安全且高效的HashMap实现(若对HashMap的实现原理还不甚了解,可参考我的另一篇文章HashMap实现原理及源码分析),ConcurrentHashMap在并发编程的场景中使用频率非常之高,本文就来分析下ConcurrentH 阅读全文
posted @ 2017-05-14 18:24 dreamcatcher-cx 阅读(118276) 评论(15) 推荐(53) 编辑
摘要:在谈谈java中的volatile一文中,我们提到过并发包中的原子类可以解决类似num++这样的复合类操作的原子性问题,相比锁机制,使用原子类更精巧轻量,性能开销更小,本章就一起来分析下原子类的实现机理。 悲观的解决方案(阻塞同步) 我们知道,num++看似简单的一个操作,实际上是由1.读取 2.加 阅读全文
posted @ 2017-04-30 23:57 dreamcatcher-cx 阅读(18964) 评论(2) 推荐(4) 编辑
摘要:内存可见性 留意复合类操作 解决num++操作的原子性问题 禁止指令重排序 总结 内存可见性 volatile是Java提供的一种轻量级的同步机制,在并发编程中,它也扮演着比较重要的角色。同synchronized相比(synchronized通常称为重量级锁),volatile更轻量级,相比使用s 阅读全文
posted @ 2017-03-18 20:02 dreamcatcher-cx 阅读(55128) 评论(15) 推荐(33) 编辑
摘要:ThreadLocal介绍&跳出误区 看看源码 线程独享变量? ThreadLocal介绍&跳出误区 ThreadLocal一般称为线程本地变量,它是一种特殊的线程绑定机制,将变量与线程绑定在一起,为每一个线程维护一个独立的变量副本。通过ThreadLocal可以将对象的可见范围限制在同一个线程内。 阅读全文
posted @ 2016-12-14 00:02 dreamcatcher-cx 阅读(28256) 评论(6) 推荐(8) 编辑