线程池的使用 Executor框架可以将任务的提交与任务的执行策略解耦开来。并非所有的任务都使用所有的执行策略,有些任务需要明确的指定执行策略,包括: 依赖性任务:提交给线程池的任务需要依赖其他的任务,那么就隐含地给执行…
分类:java并发
取消与关闭(第七章)
取消与关闭 Java中没有提供任何机制来安全得终止线程,但它提供了中断(Interruption),这是一种协作机制,能够使一个线程终止另一个线程当前的工作。我们很少希望某个任务、线程或服务立即停止,因为这种立即停止会使…
任务执行(第六章)
任务执行 任务边界:当围绕“任务执行”来设计应用程序时,第一步就是要找出清晰的任务边界。 1.为每个任务创建一个线程的风险: 线程生命周期的开销非常高:线程的创建于销毁 资源消耗:活跃的线程会消耗系统资源,尤其是内存。如…
Java中的基础构建模块(第五章)
Java中的基础构建模块 Java平台类库包含了丰富的并发基础构建模块,例如线程安全的容器类以及各种用于协调多个相互协作的线程控制流的同步工具类。 1.同步容器类 同步容器类都是线程安全的,但在某些情况下可能需要额外的客…
Java 并发编程:核心理论
Java并发编程系列: Java 并发编程:核心理论 Java并发编程:Synchronized及其实现原理 Java并发编程:Synchronized底层优化(轻量级锁、偏向锁) Java 并发编程:线程间…
Java 并发编程:线程间的协作(wait/notify/sleep/yield/join)
Java并发编程系列: Java 并发编程:核心理论 Java并发编程:Synchronized及其实现原理 Java并发编程:Synchronized底层优化(轻量级锁、偏向锁) Java 并发编程:线程间…
Java 并发编程:volatile的使用及其原理
Java并发编程系列: Java 并发编程:核心理论 Java并发编程:Synchronized及其实现原理 Java并发编程:Synchronized底层优化(轻量级锁、偏向锁) Java 并发编程:线程间…
ConcurrentHashMap源码阅读笔记(JUC)
76-85行 注释:这里主要讲的是同为线程安全的Hash,HashTable和ConcurrentHashMap的区别。ConcurrentHashMap(下文用本类指代)虽然是线程安全的,但是检索操作(比如get,是不…
java并发编程(七)----(JUC)ReadWriteLock
前面我们已经分析过JUC包里面的Lock锁,ReentrantLock锁和semaphore信号量机制。Lock锁实现了比synchronized更灵活的锁机制,Reentrantlock是Lock的实现类,是一种可重入…
java并发编程(八)----(JUC)CountDownLatch
CountDownLatch 是一个非常实用的多线程控制工具类。” Count Down ” 在英文中意为倒计数, Latch 为门问的意思。如果翻译成为倒计数门阀, 我想大家都会觉得不知所云吧! 因此,这里简单地称之为…
java并发编程(十一)----(JUC原子类)基本类型介绍
上一节我们说到了基本原子类的简单介绍,这一节我们先来看一下基本类型: AtomicInteger, AtomicLong, AtomicBoolean。AtomicInteger和AtomicLong的使用方法差不多,A…
java并发编程(十二)----(JUC原子类)数组类型介绍
上一节我们介绍过三个基本类型的原子类,这次我们来看一下数组类型: AtomicIntegerArray, AtomicLongArray, AtomicReferenceArray。其中前两个的使用方式差不多,Atomi…