java并发
meijunhui
有短板就要去克服
展开
-
ThreadPoolExecutor使用
ThreadPoolExecutor是 java提供的一个线程池工具类 public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime,原创 2017-07-21 08:48:20 · 415 阅读 · 0 评论 -
CyclicBarrier源码浅析
CyclicBarrier内部实现很简单,利用ReentrantLock 和 Condition控制并发,初始化的时候创建一个 计数器,每线程调用await方法的时候 计数器减1,再判断计数器是否等于0,等于0的话,就唤醒所有 await的线程,不等于0的话,就调用condition的await方法等待 public CyclicBarrier(int parties, Runnabl原创 2017-07-19 13:31:11 · 221 阅读 · 0 评论 -
CyclicBarrier使用
CyclicBarrier 允许一组线程到达某个 屏障的时候阻塞,比如5个线程,前面4个线程无论谁到达的时候都会阻塞,当最后一个线程到达的时候,所有的线程就都会唤醒执行原创 2017-07-19 11:29:45 · 200 阅读 · 0 评论 -
CountDownLatch使用
CountDownLatch, 允许一组线程都完成后再执行某些事情,例如A 线程需要等待 B C D线程 都执行完成后再执行 public static void main(String[] args) throws InterruptedException { CountDownLatch latch = new CountDownLatch(2); ...原创 2017-07-18 21:06:12 · 335 阅读 · 0 评论 -
semaphore信号量使用
semaphore允许 指定数量的线程同时运行,比如有5件商品,现在同时有10个人同时在买,只允许前面5个买成功class Work implements Runnable{ private Semaphore sem; public Work(Semaphore sem){ this.sem=sem; } @Override pu原创 2017-07-19 15:24:22 · 480 阅读 · 0 评论 -
Exchanger 线程之间数据传输
java Exchanger类用于在线程之间传输数据class ExchangeOne implements Runnable{ Exchanger exchanger; public ExchangeOne(Exchanger exchanger){ this.exchanger=exchanger; } @Override pub原创 2017-07-19 16:03:57 · 286 阅读 · 0 评论