张孝祥java.concurrent线程并发学习笔记 - concurrent简介
2016-05-05 14:58
567 查看
Java.util.concurrent并发库是JDK1.5新提供的,在JDK1.5之前,Java中要进行业务并发时,通常需要有程序员独立完成代码实现,而当针对高质量Java多线程并发程序设计时,为防止死蹦等现象的出现,比如使用java之前的wait()、notify()和synchronized等,每每需要考虑性能、死锁、公平性、资源管理以及如何避免线程安全性方面带来的危害等诸多因素,往往会采用一些较为复杂的安全策略,加重了程序员的开发负担.万幸的是,在JDK1.5出现之后,Sun大神(Doug
Lea)终于为我们这些可怜的小程序员推出了java.util.concurrent工具包以简化并发完成。开发者们借助于此,将有效的减少竞争条件(race conditions)和死锁线程。concurrent包很好的解决了这些问题,为我们提供了更实用的并发程序模型。
java.util.concurrent包分成了三个部分,分别是java.util.concurrent、java.util.concurrent.atomic和java.util.concurrent.lock。内容涵盖了并发集合类、线程池机制、同步互斥机制、线程安全的变量更新工具类、锁等等常用工具。
java.util.concurrent包:
java.util.concurrent.lock包:
java.util.concurrent.atomic包:
以后章节将逐一讲解每一个类的使用。
Lea)终于为我们这些可怜的小程序员推出了java.util.concurrent工具包以简化并发完成。开发者们借助于此,将有效的减少竞争条件(race conditions)和死锁线程。concurrent包很好的解决了这些问题,为我们提供了更实用的并发程序模型。
java.util.concurrent包分成了三个部分,分别是java.util.concurrent、java.util.concurrent.atomic和java.util.concurrent.lock。内容涵盖了并发集合类、线程池机制、同步互斥机制、线程安全的变量更新工具类、锁等等常用工具。
java.util.concurrent包:
接口摘要 | |
---|---|
BlockingDeque<E> | 支持两个附加操作的 Queue,这两个操作是:获取元素时等待双端队列变为非空;存储元素时等待双端队列中的空间变得可用。 |
BlockingQueue<E> | 支持两个附加操作的 Queue,这两个操作是:获取元素时等待队列变为非空,以及存储元素时等待空间变得可用。 |
Callable<V> | 返回结果并且可能抛出异常的任务。 |
CompletionService<V> | 将生产新的异步任务与使用已完成任务的结果分离开来的服务。 |
ConcurrentMap<K,V> | 提供其他原子 putIfAbsent、remove、replace 方法的 Map。 |
ConcurrentNavigableMap<K,V> | 支持 NavigableMap操作,且以递归方式支持其可导航子映射的 ConcurrentMap。 |
Delayed | 一种混合风格的接口,用来标记那些应该在给定延迟时间之后执行的对象。 |
Executor | 执行已提交的 Runnable任务的对象。 |
ExecutorService | Executor提供了管理终止的方法,以及可为跟踪一个或多个异步任务执行状况而生成 Future的方法。 |
Future<V> | Future 表示异步计算的结果。 |
RejectedExecutionHandler | 无法由 ThreadPoolExecutor执行的任务的处理程序。 |
RunnableFuture<V> | 作为 Runnable的 Future。 |
RunnableScheduledFuture<V> | 作为 Runnable的 ScheduledFuture。 |
ScheduledExecutorService | 一个 ExecutorService,可安排在给定的延迟后运行或定期执行的命令。 |
ScheduledFuture<V> | 一个延迟的、结果可接受的操作,可将其取消。 |
ThreadFactory | 根据需要创建新线程的对象。 |
枚举摘要 | |
---|---|
TimeUnit | TimeUnit 表示给定单元粒度的时间段,它提供在这些单元中进行跨单元转换和执行计时及延迟操作的实用工具方法。 |
接口摘要 | |
---|---|
Condition | Condition将 Object监视器方法( wait、 notify和 notifyAll)分解成截然不同的对象,以便通过将这些对象与任意 Lock实现组合使用,为每个对象提供多个等待 set(wait-set)。 |
Lock | Lock实现提供了比使用 synchronized方法和语句可获得的更广泛的锁定操作。 |
ReadWriteLock | ReadWriteLock 维护了一对相关的锁,一个用于只读操作,另一个用于写入操作。 |
类摘要 | |
---|---|
AbstractOwnableSynchronizer | 可以由线程以独占方式拥有的同步器。 |
AbstractQueuedLongSynchronizer | 以 long 形式维护同步状态的一个 AbstractQueuedSynchronizer版本。 |
AbstractQueuedSynchronizer | 为实现依赖于先进先出 (FIFO) 等待队列的阻塞锁和相关同步器(信号量、事件,等等)提供一个框架。 |
LockSupport | 用来创建锁和其他同步类的基本线程阻塞原语。 |
ReentrantLock | 一个可重入的互斥锁 Lock,它具有与使用 synchronized方法和语句所访问的隐式监视器锁相同的一些基本行为和语义,但功能更强大。 |
ReentrantReadWriteLock | 支持与 ReentrantLock类似语义的 ReadWriteLock实现。 |
ReentrantReadWriteLock.ReadLock | ReentrantReadWriteLock.readLock()方法返回的锁。 |
ReentrantReadWriteLock.WriteLock | ReentrantReadWriteLock.writeLock()方法返回的锁。 |
类摘要 | |
---|---|
AtomicBoolean | 可以用原子方式更新的 boolean值。 |
AtomicInteger | 可以用原子方式更新的 int值。 |
AtomicIntegerArray | 可以用原子方式更新其元素的 int数组。 |
AtomicIntegerFieldUpdater<T> | 基于反射的实用工具,可以对指定类的指定 volatile int字段进行原子更新。 |
AtomicLong | 可以用原子方式更新的 long值。 |
AtomicLongArray | 可以用原子方式更新其元素的 long数组。 |
AtomicLongFieldUpdater<T> | 基于反射的实用工具,可以对指定类的指定 volatile long字段进行原子更新。 |
AtomicMarkableReference<V> | AtomicMarkableReference维护带有标记位的对象引用,可以原子方式对其进行更新。 |
AtomicReference<V> | 可以用原子方式更新的对象引用。 |
AtomicReferenceArray<E> | 可以用原子方式更新其元素的对象引用数组。 |
AtomicReferenceFieldUpdater<T,V> | 基于反射的实用工具,可以对指定类的指定 volatile字段进行原子更新。 |
AtomicStampedReference<V> | AtomicStampedReference维护带有整数“标志”的对象引用,可以用原子方式对其进行更新。 |
相关文章推荐
- java 的方法注释写在哪里?
- Spring常用注解
- java反射之Class.getMethod与getDeclaredMethods()区别
- 部署shop++,启动eclipse遇到内存溢出。
- eclipse java 配置
- java序列化的作用和反序列化
- Liquibase+spring 初步使用
- Spring 实现初始化和销毁bean之前进行的操作的方法
- MyBatis学习总结(八)——Mybatis3.x与Spring4.x整合
- java中22种设计模式
- java动态管理
- c#调用带有安全认证的java webservice
- spring3.0注解
- java 连接 mysql 数据库常用属性作用
- elasticsearch java 学习
- 不惑JAVA之JAVA基础 - 多线程
- Eclipse修改编码格式
- java jar 配置文件的相对路径问题
- Spring MVC整合Velocity
- java NIO流代码