concurrent
iteye_9601
这个作者很懒,什么都没留下…
展开
-
同步synchronized方法和代码块
同步synchronized方法和代码块打个比方:一个object就像一个大房子,大门永远打开。房子里有很多房间(也就是方法)。这些房间有上锁的(synchronized方法),和不上锁之分(普通方法)。房门口放着一把钥匙(key),这把钥匙可以打开所有上锁的房间。另外我把所有想调用该对象方法的线程比喻成想进入这房子某个房间的人。所有的东西就这么多了,下面我们看看这些东西之间如何作用的。...2009-03-15 22:40:35 · 93 阅读 · 0 评论 -
[童虎退壳系列]方法加锁测试
package creative.fire.multithread;import java.util.concurrent.CountDownLatch;/** * @author feuyeux@gmail.com 2011-10-13 * *//* * synchronized static void foo() { ... } is the s...原创 2011-10-13 01:34:35 · 85 阅读 · 0 评论 -
线程池 浅析
本文是对java线程池的粗浅分析,视野局限于线程池的基本实现,不包含生命周期,状态管理。 线程池的特点是将任务的提交和执行分开。这样做的好处是,能使处理器尽量多地同时执行任务。 为此,线程池提供了两个角色:任务 task执行任务的工人 worker 与此相关,需要考虑:工人的数量:工人数量的考量是线程池设计的一个关键。因此,这一点由构造线程池时,提供...原创 2010-12-03 15:26:49 · 189 阅读 · 0 评论 -
并发集合 CopyOnWrite
CopyOnWriteArrayList内部结构比较简单;包含了一个可重入锁: transient final ReentrantLock lock = new ReentrantLock();一个易变的对象类型数组。它是具体包含数据的主角,只是其内容总是在数据发生变化时,集体哗变: private volatile transient Object[] array...原创 2010-11-28 01:59:33 · 102 阅读 · 0 评论 -
并发集合 Queue
ArrayBlockingQueue内部结构 private final E[] items;/** The queued items */private int takeIndex;/** items index for next take, poll or remove */private int putIndex;/** items index f...原创 2010-11-28 01:54:58 · 102 阅读 · 0 评论 -
并发集合 ConcurrentHash
Synchronized Collections --同步集合 包括Vector 和 Hashtable,以及由 Collections.synchronizedXxx 工厂方法生成的同步包装类。需要使用synchronized 关键字隐式加锁。iterator不支持并发修改。 Concurrent Collections--并发集合 Concur...原创 2010-11-21 21:09:52 · 167 阅读 · 0 评论 -
同步器
Latch 门闩CountDownLatch 的一个有用特性是,它不要求调用 countDown 方法的线程等到计数到达零时才继续,而在所有线程都能通过之前,它只是阻止任何线程继续通过一个 await。计数无法被重置。如果需要重置计数,请考虑使用 CyclicBarrier。 确保一组特定的活动在某一活动完成前,一直处于等待。比如:1、在资源R初始化之前,使用该资源的所...原创 2010-11-17 02:08:53 · 144 阅读 · 0 评论 -
线程池的实现
自己实现了一个简单的线程池。希望回复者讨论技术问题,不要说都已经有了,你还重复造轮子。我的目的是讨论线程池的实现,而不是提供使用。 测试代码:package threadpool;import ojadb.core.thread.OjadbThreadPool;import ojadb.core.thread.task.OjadbTask;import ojadb....2009-12-19 21:51:10 · 61 阅读 · 0 评论 -
LRU缓存的实现之性能测试
针对上一篇文章,这里给出性能测试:10000条随机数据,50个线程读写。 package lru;import java.util.Random;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class Performance{ s...2009-12-08 15:19:37 · 456 阅读 · 0 评论 -
LRU缓存的实现
LinkedHashMap是一个现成的LRU实现。但其缺乏并发机制,并且没有实现满载删除条件(removeEldestEntry),因此本文认为LinkedHashMap是预留扩展的LRU类。本文将继承该类进一步实现LRU缓存。首先,并发使用可重入锁。对于封读锁后是否可写,封写锁后是否可读的问题,这是一个封锁策略。一般而言,读后,若写,会产生脏数据。写后,若读则没有问题。 可重入锁...2009-12-08 11:42:22 · 109 阅读 · 0 评论 -
[童虎退壳系列]死锁演示
package creative.fire.multithread;/** * @author feuyeux@gmail.com 2011-10-13 * */public class DeadLockTest extends Thread { private final int timeout1 = 2 * 1000; private final int...原创 2011-10-13 01:53:35 · 86 阅读 · 0 评论