Java并发编程
闵浮龙
要么精彩的活,要么卑微的死
展开
-
并发工具类CountDownLatch、CyclicBarrier、Semaphore、Exchanger详解
一、CountDownLatch一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。用给定的计数 初始化 CountDownLatch。由于调用了 countDown() 方法,所以在当前计数到达零之前,await 方法会一直受阻塞。之后,会释放所有等待的线程,await 的所有后续调用都将立即返回。这种现象只出现一次——计数无法被重置。如果需要重置计数,...原创 2018-03-31 14:21:59 · 612 阅读 · 0 评论 -
FutureTask介绍及使用
FutureFuture是一个接口,它定义了5个方法:boolean cancel(boolean mayInterruptIfRunning);boolean isCancelled();boolean isDone();V get() throws InterruptedException, ExecutionException; 简单说明一下接口定义boolean can...转载 2018-03-31 19:56:38 · 43664 阅读 · 2 评论 -
ForkJoin框架详解
一、ForkJoin主要类主要类有以下4个:1、ForkJoinPool 2、ForkJoinTask 3、ForkJoinWorkerThread 4、ForkJoinPool.WorkQueue 功能如下: ForkJoinPool: 1,用来执行Task,或生成新的ForkJoinWorkerThread 2,执行 ForkJoinWorkerThread 间的...转载 2018-03-31 23:44:02 · 316 阅读 · 0 评论 -
并发容器CopyOnWriteArrayList、ConcurrentLinkedQueue、ArrayBlockingQueue原理与使用
一、为什么要使用并发容器举例说明:线程安全容器–>线程不安全容器–>并发容器 Vector –>ArrayList –>CopyOnWriteArrayList Hashtable –>HashMap –>ConcurrentHashMap 从上面可以发现其中线程安全的容器Vector、Ha...原创 2018-04-01 09:49:11 · 1363 阅读 · 0 评论 -
线程池
线程池线程池线程池概述创建一个线程池并提交线程任务线程池源码解析参数认识构造方法提交任务addWorker执行任务关闭线程池例子线程池概述什么是线程池为什么使用线程池线程池的优势第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要的等到线程创建就能立即执行。...转载 2018-04-01 18:31:57 · 213 阅读 · 0 评论 -
Java并发编程原理与实战一(线程状态及创建线程的多种方式)
一、为什么要学习并发编程1.发挥多处理的强大能力 2.建模的简单性 3.异步事件的简化处理 4.响应更加灵敏的用户界面二、并发的缺点1.安全性问题多线程环境下 多个线程共享一个资源 对资源进行非原子性操作2.活跃性问题(饥饿)1、死锁 2、饥饿 饥饿与公平 1)高优先级吞噬所有低优先级的CPU时间片 2)线程被永久堵塞在一个...转载 2018-03-28 13:50:33 · 1217 阅读 · 0 评论 -
java多线程实现生产者消费者场景
商店public class Tmall { private int count; public final int MAX_COUNT = 10; public synchronized void push () { while(count >= MAX_COUNT) { try { ...原创 2018-03-28 15:32:55 · 1345 阅读 · 0 评论 -
java多线程之间的相互通信
利用Condition的await方法和signal方法了指定叫醒一个线程、通过变量signal来实现线程之间的通信import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;publ...原创 2018-03-28 22:49:21 · 424 阅读 · 0 评论 -
线程之间通信之join应用与实现原理剖析
public class Demo { public void a(Thread joinThread) { System.out.println("方法a执行了..."); joinThread.start(); try { joinThread.join(); } catch (Interru...原创 2018-03-29 07:13:51 · 315 阅读 · 0 评论