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提供弱一致性而不是快速失败的遍历:
ConcurrentModificationException
synchronized
和
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.