并发
Zhang_Kai_123
这个作者很懒,什么都没留下…
展开
-
Java读写锁基本使用
ReadWriteLock使得你可以同时具有多个读取者,只要他们都不试图写入即可。如果写锁被其他任务持有,那么任何读取者均不能访问,直至这个写锁被释放为止。 ReadWriteLock能否提高性能是不确定的,取决于数据读取与修改频率相比较的结果,读取和写入操作的时间,竞争的线程数以及是否是多处理器等等。 下面展示了ReadWriteLock最基本的用法。[cod...原创 2014-03-05 17:14:26 · 320 阅读 · 0 评论 -
使用ReentrantReadWriteLock实现一个简单的缓存Demo
[b]重入[/b] 此锁允许 reader 和 writer 按照 ReentrantLock 的样式重新获取读取锁或写入锁。在写入线程保持的所有写入锁都已经释放后,才允许重入 reader 使用它们。 此外,writer 可以获取读取锁,但反过来则不成立。在其他应用程序中,当在调用或回调那些在读取锁状态下执行读取操作的方法期间保持写入锁时,重入很有用。如果 reader 试图...原创 2014-03-05 20:20:07 · 357 阅读 · 0 评论 -
java线程本地存储使用
防止任务在共享资源上发生冲突的一种方式是根除对变量的共享。线程本地存储可以为使用相同变量的每个不同线程都创建不同存储。ThreadLocal该类提供了线程局部 (thread-local) 变量。这些变量不同于它们的普通对应物,因为访问某个变量(通过其 get 或 set 方法)的每个线程都有自己的局部变量,它独立于变量的初始化副本。ThreadLocal 实例通常是类中的 private...原创 2014-03-06 10:21:22 · 274 阅读 · 0 评论 -
使用synchronized和Condition三线程轮流打印A,B,C示例
ReentrantLock并不是一种替代内置加锁的方法,而是当内置加锁机制不适用时,作为一种可选择的高级功能。当需要一些高级功能时才使用ReentrantLock,包括定时的锁等待,可中断的锁等待,公平性,锁绑定多个条件以及实现非块结构的加锁。否则,还是应该优先使用内置锁synchronized。synchronized是JVM的内置特性,可以进行一些优化。比如对线程封闭锁对象的锁消除优化...原创 2014-09-12 09:03:51 · 259 阅读 · 0 评论 -
使用Condition实现有界缓存
[code="java"]import java.util.concurrent.locks.*;import net.jcip.annotations.*;/** * ConditionBoundedBuffer * * Bounded buffer using explicit condition variables * * @aut...原创 2014-09-13 17:08:25 · 168 阅读 · 0 评论 -
使用两个容量为1的阻塞队列实现同步通知的功能
[code="java"]package concurrency;import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.BlockingQueue;public class BlockingQueueCommunication { public static void main(...原创 2014-09-13 17:24:57 · 207 阅读 · 0 评论 -
为什么wait 和notifyAll 必须要使用synchronized?
为什么wait 和notifyAll(notify) 必须要使用synchronized?synchronized(object){ object.wait();} synchronized(this){ this.wait();} synchronized fun(){ this.wait();} 如...原创 2014-09-28 17:21:53 · 654 阅读 · 0 评论