2015年5月29日
摘要: java.util.concurrentClass CountDownLath使一个线程或多个线程等待另外一个线程或多个线程操作的完成。CountDownLath以一个给定的数字初始化。await方法一直阻塞直到当前这个数字由于其他线程运行countDown方法将初始化的数字减为0,阻塞等待的线程才... 阅读全文
posted @ 2015-05-29 17:37 飞机说之代码也疯狂 阅读(189) 评论(0) 推荐(0) 编辑
摘要: java.util.concurrentClass CyclicBarrier使得一系列的线程相互等待,直到全部线程都到达一个公共的屏障点。这个屏障之所以称为Cyclic(循环的),是因为它能够在等待线程释放后重复使用。CyclicBarrier支持一个可选Runnable的参数,在每个屏障点运行一... 阅读全文
posted @ 2015-05-29 16:55 飞机说之代码也疯狂 阅读(178) 评论(0) 推荐(0) 编辑
摘要: java.util.concurrentClass SemaphoreSemaphore常用来限制一定数量的线程来访问某个共享资源。一个Semaphore控制了一组令牌。除非存在可使用的令牌否则在调用acquire去获得资源时将会被阻塞。release方法就是释放令牌,潜在的能够为acquire提供... 阅读全文
posted @ 2015-05-29 16:25 飞机说之代码也疯狂 阅读(214) 评论(0) 推荐(0) 编辑
摘要: java.util.concurrent.locksInterface ConditionCondition类似于传统的wait、notify/notifyAll方法(这些方法需要内部监听器)。Condition是在Lock之下,换句话说,有了Lock才可能产生Condition。在一个Lock之下... 阅读全文
posted @ 2015-05-29 15:12 飞机说之代码也疯狂 阅读(148) 评论(0) 推荐(0) 编辑
  2015年5月28日
摘要: 读写锁:分为读锁和写锁,多个读锁不互斥,读锁与写锁互斥,写锁与写锁互斥,这是由JVM控制的,我们只要上好相应的锁即可。如果你的代码只读数据,可以很多人同时读,但是不能同时写,那就上读锁;如果代码修改数据,只能一个人在写,且不能同时读取,那就上写锁。总之,读的时候上读锁,写的时候上写锁。java.ut... 阅读全文
posted @ 2015-05-28 09:07 飞机说之代码也疯狂 阅读(154) 评论(0) 推荐(0) 编辑
  2015年5月27日
摘要: java.util.concurrent.locksInterface Lock所有实现类:ReentrantLock、ReentrantReadWriteLock.ReadLock、ReentrantReadWriteLock.writeLockLock的实现比使用synchronized获得更多... 阅读全文
posted @ 2015-05-27 13:54 飞机说之代码也疯狂 阅读(192) 评论(0) 推荐(0) 编辑
摘要: 1、java.util.concurrent Class Executurspublic class Executors extends Object其中提供了返回类型为Executor、ExecutorService、ScheduledExecutorService、ThreadFactory和... 阅读全文
posted @ 2015-05-27 12:34 飞机说之代码也疯狂 阅读(478) 评论(0) 推荐(0) 编辑
  2015年5月26日
摘要: 虽然Timer这个类已经很少用,在实际项目当中都是用第三方定时器项目,如quartz。但是如果研究一下Timer的源码,还是有必要的,因为其中包含了涉及的知识点还是挺多的。比如,自动扩容、优先级队列,还有任务调度的一些策略。 1 /** 2 * 在特定的时间调度特定的任务。 如果 3 ... 阅读全文
posted @ 2015-05-26 18:17 飞机说之代码也疯狂 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 我们知道像线程的sleep、wait等方法都需要捕捉(不能抛出)InterruptedException。什么时候会导致线程抛出这个InterruptedException异常呢? 1 public class ThreadTest { 2 public static void main(St... 阅读全文
posted @ 2015-05-26 16:50 飞机说之代码也疯狂 阅读(235) 评论(0) 推荐(0) 编辑
摘要: 我们知道线程之所以不安全是因为线程之间存在竞争,而存在竞争是因为它们共享资源。因此有时候,我们会需要将资源只在本线程内,资源只与相应的线程存在关系,那么就避免了线程不安全。ThreadLocal就是一个将变量与特定的线程进行绑定的一个类,资源只会属于一个特定的线程。ThreadLocal就是一个Ma... 阅读全文
posted @ 2015-05-26 16:18 飞机说之代码也疯狂 阅读(159) 评论(0) 推荐(0) 编辑