线程
文章平均质量分 74
restart_chikhoo
新的起点,重新起航~~
展开
-
Timer和TimerTask解读
测试Timer的代码如下: Timer timer = new Timer(); timer.schedule(new TimerTask(){ @Override public void run() { System.out.println("aaaaa"); } }, 0);Timer类中有一个TaskQueue和一个TimerThrea原创 2015-03-20 16:31:00 · 291 阅读 · 0 评论 -
ReentrantLock、AbstractQueuedSynchronizer解读
在使用ReentrantLock时,我们首先调用的是ReentrantLock类的lock()方法,ReentrantLock内部维护着一个Sync同步对象,该对象继承了AbstractQueuedSynchronizer(以下简称AQS)抽象类。在创建ReentrantLock类时创建了这个Sync同步对象,ReentrantLock的构造方法如下: public ReentrantL原创 2015-03-20 16:31:12 · 301 阅读 · 0 评论 -
ThreadLocal解读
每个Thread对象中都有一个ThreadLocal.ThreadLocalMap类型的属性,ThreadLocalMap中包装了内部类Entry(ThreadLocalk, Object v)的数组(Entry继承自WeakReference),key为ThreadLocal的引用,value是一个Object类型,通过ThreadLocal的set方法设置的就是每个线程自己的ThreadL原创 2015-03-20 16:33:44 · 728 阅读 · 0 评论 -
CountDownLatch解读
CountDownLatch类的内部有一个同步器的对象,他也是基于AQS来实现了,同步器代码如下:private static final class Sync extends AbstractQueuedSynchronizer { private static final long serialVersionUID = 4982264981922014374L;原创 2015-03-20 16:33:07 · 394 阅读 · 0 评论 -
ScheduledThreadPool解读
了解了JDK自带的Timer和TimerTask的源码,再了解ScheduledThreadPool就会相对容易一些。ScheduledThreadPoolExecutor继承了ThreadPoolExecutor。我们测试的方法如下:ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPoo原创 2015-03-20 16:32:06 · 840 阅读 · 0 评论 -
wait() 不一定需要notify()唤醒
线程正常结束后,会使以这个线程对象运行的wait()等待,退出等待状态!而如果在运行wait()之前,线程已经结束了,则这个wait就没有程序唤醒了。 原码里的join()方法,实际上就是运行的 wait(). 需要运行join的线程运行join方法,实际上是在此线程上调用了需要加入的线程对象的wait()方法,加入的线程运行完后,自然从wait退出了。 到此,就转载 2015-03-20 16:36:11 · 2597 阅读 · 0 评论 -
浅析 Java Thread.join()
一、在研究join的用法之前,先明确两件事情。1.join方法定义在Thread类中,则调用者必须是一个线程,例如:Thread t = new CustomThread();//这里一般是自定义的线程类t.start();//线程起动t.join();//此处会抛出InterruptedException异常 2.上面的两行代码也是在一个线程里面执行的。 以上转载 2015-03-20 16:34:23 · 227 阅读 · 0 评论 -
ThreadPoolExecutor解读
我们常用的线程池实现如:ExecutorService fixdThreadPool = Executors.newFixedThreadPool(10); ExecutorService cachedThreadPool = Executors.newCachedThreadPool();是使用Executors类的方法创建的,他的内部创建了ThreadPoolExecutor对象,原创 2015-03-20 16:31:57 · 380 阅读 · 0 评论 -
CyclicBarrier解读
CyclicBarrier能实现与CountDownLatch相同的功能,但是两者的实现上是不一样的,而且CountDownLatch每次使用完再继续使用就会有问题,而CyclicBarrier不一样,可以一直使用,下面我们来分析一下CyclicBarrier的代码。CyclicBarrier的代码中并没有定义自己的同步器类,他是基于ReentrantLock和Condition来实现的原创 2015-03-20 16:32:12 · 622 阅读 · 0 评论 -
CompletionService解读
CompletionService的测试代码如下所示:final Randomrandom = new Random();ExecutorService executorService = Executors.newFixedThreadPool(10);CompletionServicecompletionService =new ExecutorCompletionServ原创 2015-03-20 16:31:51 · 1239 阅读 · 0 评论