| Enum | 描述 |
|---|---|
| TimeUnit |
一个
TimeUnit代表时间在给定单位的粒度,提供实用的方法来转换过的单位,并进行定时和延时操作这些单位。
|
| 异常 | 描述 |
|---|---|
| BrokenBarrierException |
当一个线程试图等待处于一个处于中断状态的障碍,或在线程等待时进入中断状态的一个障碍物时引发的异常。
|
| CancellationException |
异常说明价值生产任务的结果,如
FutureTask,无法取回,因为任务被取消。
|
| CompletionException |
在完成结果或任务的过程中遇到错误或其他异常时引发的异常。
|
| ExecutionException |
当试图检索通过抛出异常中止的任务的结果时引发的异常。
|
| RejectedExecutionException |
抛出异常的
Executor当任务不能被执行。
|
| TimeoutException |
当阻塞操作超时时引发的异常。
|
java.util.concurrent.locks和
java.util.concurrent.atomic包。
Executor是定义自定义线程子系统一个简单的标准化接口,包括线程池,异步I/O,和轻量级任务框架。这取决于具体的执行者级正在使用,任务可以在一个新创建的线程执行,现有的任务执行线程的线程调用,或
execute,可以依次或同时执行。
ExecutorService提供了更完整的异步任务执行框架。一个服务管理排队和调度任务,并允许控制关机。的
ScheduledExecutorService接口和相关的接口添加延迟和周期性任务执行支持。executorservices提供方法安排表现为
Callable异步执行的任何功能,
Runnable轴承模拟结果。一个
Future返回一个函数的结果,可以确定是否执行完成,并提供了一种手段来取消执行。一个
RunnableFuture是
Future具有在执行
run方法,设置它的结果。
实现。类ThreadPoolExecutor和ScheduledThreadPoolExecutor提供可调的、灵活的线程池。的Executors类提供了最常见的种类和配置执行工厂方法,以及一些实用的使用方法。基于Executors其他设施包括具体的类提供一个共同FutureTask期货,可扩展的实现和ExecutorCompletionService,帮助协调异步任务组的处理。
类ForkJoinPool提供执行器主要用于ForkJoinTask及其子类处理实例。这些类采用了工作窃取调度,达到高吞吐量的任务,符合限制,往往保持在计算密集型并行处理。
ConcurrentLinkedQueue类提供了一个高效可扩展的线程安全的非阻塞FIFO队列。的
ConcurrentLinkedDeque类相似,但同时支持
Deque接口。
在java.util.concurrent五实现支持扩展BlockingQueue接口,定义阻塞版本会:LinkedBlockingQueue,ArrayBlockingQueue,SynchronousQueue,PriorityBlockingQueue,和DelayQueue。不同的类包括生产者消费者、消息传递、并行处理和相关并行设计的最常见的使用上下文上下文。
TransferQueue扩展接口,实现LinkedTransferQueue介绍同步transfer方法(以及相关的功能),生产者可以选择块等待消费者。
BlockingDeque接口扩展的BlockingQueue支持FIFO和LIFO(基于堆栈的)操作。类提供了一个实现LinkedBlockingDeque。
TimeUnit类提供了多粒度(包括纳秒)指定和控制的基于超时的操作。包中的大多数类都包含基于超时的操作,除了不确定的等待。在所有的情况下,超时使用,超时指定方法应该在表明它超时等待时间最小。实现“尽最大努力”,以检测超时,尽快后,他们发生。然而,一段时间从一个超时检测线实际执行后再次暂停。接受超时参数的所有方法处理值小于或等于零,意味着不等待。等待“永远”,你可以用一个价值
Long.MAX_VALUE。
Semaphore是一个经典的并发工具。CountDownLatch是阻塞直到给定数量的信号,事件很简单但很常见的效用,或条件。CyclicBarrier一些并行编程风格是可复位的多路同步点有用的。Phaser提供了更灵活的屏障,可以用来控制相位计算的多个线程之间的形式。Exchanger允许两个线程在一个交会点交换的对象,是有用的几个管道设计。ConcurrentHashMap,
ConcurrentSkipListMap,
ConcurrentSkipListSet,
CopyOnWriteArrayList,和
CopyOnWriteArraySet。当许多线程将访问给定的集合,一个
ConcurrentHashMap通常最好同步
HashMap,和
ConcurrentSkipListMap通常最好同步
TreeMap。一个
CopyOnWriteArrayList最好是同步的
ArrayList当预期数量的读取和遍历大大超过更新号码列表。
这个包中的一些类的“并发”前缀是一个表示类似“同步”类的几个区别的速记。例如java.util.Hashtable和Collections.synchronizedMap(new HashMap())同步。但ConcurrentHashMap是“并发”。并发集合是线程安全的,但不受一个单一的互斥锁的支配。在ConcurrentHashMap的具体情况,它安全地允许任何数量的并发读取以及写入一个可调谐的并发数量。”同步“类可以是有用的,当你需要通过一个单一的锁,以防止所有访问到一个集合,在牺牲较差的可扩展性。在其他情况下,多个线程将访问一个常见的集合,“并发”版本通常是最好的。和不同步的集合是最好的当集合是共享的,或是只有当持有其他锁。
大多数并行采集的实现(包括大多数队列)也不同于一般的java.util公约在其Iterators和Spliterators提供弱一致性而不是快速失败的遍历:
ConcurrentModificationExceptionsynchronized和
volatile构造,以及
Thread.start()和
Thread.join()方法,可以形成之前发生的关系。特别是:
synchronized块或退出方法)一个监控之前发生的以后每锁(synchronized块或方法入口),监测。因为之前发生的关系是传递的,所有的行动,一个线程解锁发生过所有行动,随后的任何线程锁,监视器之前。volatile场之前发生的那场以后每读。写入和读取volatile领域也有类似的内存一致性效应,进入和退出监视器,但不需要互斥锁。start线程上启动的线程之前发生的任何行动。join。java.util.concurrent及其子包中的所有类中的方法将这些保证更高级别的同步。特别是:
Executor Runnable之前提交发生过执行行动开始。同样的Callables提交一ExecutorService。Future发生过行动结果的检索随后通过在另一个线程Future.get()代表异步计算所采取的行动。Lock.unlock,Semaphore.release行动,和CountDownLatch.countDown发生过行动后,一个成功的“收购”的方法,如Lock.lock,Semaphore.acquire,Condition.await,和在另一个线程同步对象CountDownLatch.await相同。Exchanger,行动之前的exchange()每个线程发生过那些在另一个线程对应的exchange()后续。CyclicBarrier.await和Phaser.awaitAdvance之前的行动(以及它的变体)发生过行动的屏障作用,并通过屏障作用发生过行动从其他线程中相应的await成功返回后执行的动作。 Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.