java.util.concurrent - Java并发工具包
来源:互联网 发布:2016高校网络舆情事件 编辑:程序博客网 时间:2024/05/17 23:23
Java 5添加了一个新的包到Java平台,java.util.concurrnet包。这个包包含有一系列能够让Java的并发编程变得更加简单轻松的类。
1.BlockingQueue 阻塞队列
一个线程将会持续生产新对象并将其插入到队列之中,直到队列达到它所能容纳的临界点。也就是说,它是有限的,如果该阻塞队列到达了其临界点,负责生产的线程将会在往里面插入新对象时发生阻塞。
负责消费的线程将会一直从该阻塞队列中拿出对象。如果消费线程尝试去从一个空的队列中提取对象的时候,这个消费线程将会处于阻塞中,直到一个生产线程把一个对象丢进队列。
BlockingQueue是个接口,你需要使用它的实现之一使用BlockingQueue.
(1)ArrayBlockingQueue,是一个有界的阻塞队列。
(2)DelayQueue,对元素进行持有直到一个特定的延迟到期,注入其中的元素必须实现 java.util.concurrnet.Delayed接口。
(3)LinkedBlockingQueue,可以选择一个上限。
(4)PriorityBlockingQueue,无界队列,所有插入到PriorityBlockingQueue的元素必须实现java.lang.Comparable接口。
(5)SynchronousQueue,它的内部同时只能容纳单个元素。
2.BlockingDeque 阻塞双端队列
双端队列是一个你可以从任意一端插入或提取元素的队列。这也是一个接口,它的实现类有LinkedBlockingDeque。
3.ConcurrentMap 并发Map
这是一个接口,其实现类为ConcurrentHashMap
4.CountDownLatch 闭锁
它允许一个或多个线程等待一系列指定操作的完成。
CountDownLatch以一个给定的数量初始化。countDown()每被调用一次,这一数量就减一。通过调用await()方法之一,线程可以阻塞等待这一数量到达零。
5.CyclicBarrier
这是一个同步机制,它能够处理一些算法的线程的同步问题。换句话说它就是一个所有线程必须等待的一栅栏,直到所有的线程都到达这里,然后所有线程才可以继续做其他事情。
6.Exchanger交换机
表示一种两个线程可以进行互相交换对象的会和点。
7.Semaphore信息量
(1)acquire()
(2)release()
信号量主要有两种用途:
(1)保护一个重要的(代码)部分防止一美人鱼超过N个线程进入。
(2)在两个线程之间发送信号
8.ExecutorService 执行器服务
类似于一个线程池。这是一个接口,它的实现类有ThreadPoolExecutor和ScheduledThreadPoolExecutor。
9.ForkJoinPool
在Java7中被引入,这是一个特殊的线程池,它的设计是为更好的配合分叉-合并任务的工作。
10.Lock 锁
它是一个类似于synchronized块的线程同步机制。但是Lock比synchronized块更加灵活、精细。
(1)synchroinzed代码块不能够保证进入访问等待的线程的先后顺序。
(2)不能够传递任何参数给一个synchronized代码块的入口
(3)synchronized块必须被完整地包含在单个方法里,而一个Lock对象的可以把它的lock和unlock方法的调用放在不同的方法里。
这是一个接口,它的实现类是ReetrantLock。
11.ReadWriteLock读定锁
它能够允许多个线程在同一时间对某特定资源进行读取,但同一时间内嗵有一个线程对其进行定入。这是一个接口,它的实现类是ReentrantReadWriteLock。
12.AtomicBoolean
AtomicInteger
AtomicLong
AtomicReference
- [并发]java.util.concurrent并发工具包
- Java 并发工具包 java.util.concurrent 用户指南
- Java并发工具包java.util.concurrent用户指南
- Java 并发工具包 java.util.concurrent 用户指南
- Java 并发工具包 java.util.concurrent 用户指南
- Java 并发工具包 java.util.concurrent 用户指南
- Java 并发工具包 java.util.concurrent 用户指南
- Java 并发工具包 java.util.concurrent 用户指南
- Java 并发工具包 java.util.concurrent 大全
- java.util.concurrent - Java并发工具包
- Java 并发工具包 java.util.concurrent 用户指南
- Java 并发工具包 java.util.concurrent
- Java 并发工具包 java.util.concurrent 用户指南
- Java 并发工具包 java.util.concurrent 用户指南
- Java 并发工具包 java.util.concurrent 用户指南
- Java 并发工具包 java.util.concurrent 用户指南
- Java 并发工具包 java.util.concurrent 用户指南
- Java 并发工具包 java.util.concurrent 用户指南
- String与byte[]互转
- Product of Array Except Self
- VR开发入门:3D图像的处理过程
- HDU1702 acm 数据结构 ACboy needs your help again!
- 嵌入式 51学习
- java.util.concurrent - Java并发工具包
- EL表达式总结
- HashMap解决hash冲突的方法
- 如何修改6620/6626/6628的FM RSSI门限
- Gson解析或者转换对象成json字符串时,String为NULL转空字符串处理方案
- Struts2学习笔记
- 将二进制文件加入VC资源后释放执行
- 爬虫/脚本/Python语言- 脚本
- Hadoop name启动为standby状态shell命令报错