java并发框架有哪些

Java并发框架java.util.concurrent是JDK5中引入到标准库中的(采用的是Doug Lea的并发库)。该包下的类可以分为这么块:Executors 1)接口:Executor(例子涉及):用来执行提交的Runnable任务的对象。是一个简单的标准化接口,用来定义包括线程池、异步IO、轻量级任务框架等等。任务可以由一个新创建的线程、一...
java并发框架有哪些
Java并发框架java.util.concurrent是JDK5中引入到标准库中的(采用的是Doug Lea的并发库)。该包下的类可以分为这么块:

Executors

1)接口:

Executor(例子涉及):用来执行提交的Runnable任务的对象。是一个简单的标准化接口,用来定义包括线程池、异步IO、轻量级任务框架等等。任务可以由一个新创建的线程、一个已有任务执行线程、或是线程直接调用execute()来执行,可以串行也可并行执行,取决于使用的是哪个Executor具体类。

ExecutorService(例子涉及):Executor的子接口,提供了一个更加具体的异步任务执行框架:提供了管理结束的方法,以及能够产生Future以跟踪异步任务进程的方法。一个ExcutorService管理着任务队列和任务调度。

ScheduledExecutorService(例子涉及):ExecutorService的子接口,增加了对延迟和定期任务执行的支持。

Callable(例子涉及):一个返回结果或抛出异常的任务,实现类需要实现其中一个没有参数的叫做call的方法。Callabe类似于Runnable,但是Runnable不返回结果且不能抛出checked exception。ExecutorService提供了安排Callable异步执行的方法。

Future(例子涉及):代表一个异步计算的结果(由于是并发执行,结果可以在一段时间后才计算完成,其名字可能也就是代表这个意思吧),提供了可判断执行是否完成以及取消执行的方法。

2)实现:

ThreadPoolExecutor和ScheduledThreadPoolExecutor:可配置线程池(后者具备延迟或定期调度功能)。

Executors(例子涉及):提供Executor、ExecutorService、ScheduledExecutorService、ThreadFactory以及Callable的工厂方法及工具方法。

FutureTask:对Future的实现

ExecutorCompletionService(例子涉及):帮助协调若干(成组)异步任务的处理。

Queues

非阻塞队列:ConcurrentLinkedQueue类提供了一个高效可伸缩线程安全非阻塞FIFO队列。

阻塞队列:BlockingQueue接口,有五个实现类:LinkedBlockingQueue(例子涉及)、ArrayBlockingQueue、SynchronousQueue、PriorityBlockingQueue和DelayQueue。他们对应了不同的应用环境:生产者/消费者、消息发送、并发任务、以及相关并发设计。

Timing

TimeUnit类(例子涉及):提供了多种时间粒度(包括纳秒)用以表述和控制基于超时的操作。

Synchronizers 提供特定用途同步语境

Semaphore(例子涉及):计数信号量,这是一种经典的并发工具。

CountDownLatch(例子涉及):简单的倒计数同步工具,可以让一个或多个线程等待直到另外一些线程中的一组操作处理完成。

CyclicBarrier(例子涉及):可重置的多路同步工具,可重复使用(CountDownLatch是不能重复使用的)。

Exchanger:允许两个线程在汇合点交换对象,在一些pipeline设计中非常有用。

Concurrent Collections

除队列外,该包还提供了一些为多线程上下文设计的集合实现:ConcurrentHashMap、CopyOnWriteArrayList及CopyOnWriteArraySet。

注意:"Concurrent"前缀的类有别于"synchronized"前缀的类。“concurrent”集合是线程安全的,不需要由单排斥锁控制的(无锁的)。以ConcurrentHashMap为例,允许任何数量的并发读及可调数量的并发写。“Synchronized”类则一般通过一个单锁来防止对集合的所有访问,开销大且伸缩性差。

2017-04-05
mengvlog 阅读 85 次 更新于 2025-09-09 09:14:26 我来答关注问题0
  • Java并发框架java.util.concurrent是JDK5中引入到标准库中的(采用的是Doug Lea的并发库)。该包下的类可以分为这么块:Executors 1)接口:Executor(例子涉及):用来执行提交的Runnable任务的对象。是一个简单的标准化接口,用来定义包括线程池、异步IO、轻量级任务框架等等。任务可以由一个新创建的线程、一...

  •  武汉誉祥科技 ExecutorExecutor 框架

    Executor框架是Java 5中引入的一系列并发库的一部分,专门针对executor相关功能。其主要类包括线程池、Executor、Executors、ExecutorService、CompletionService、Future和Callable。并发编程的一种方式是将任务分解为一系列小任务,即Runnable。然后将其提交给Executor进行执行。Executor通过内部的线程池来完成操作。Exe...

  • Fork/Join框架是Java中实现分治思想以高效执行并行任务的框架。以下是Fork/Join框架的详细解释:核心思想:分治算法:Fork/Join框架基于分治算法,将复杂任务分解为较小、相似的子任务,递归解决后合并结果。主要特点:任务分解:通过fork方法将任务分解为多个子任务。并行执行:子任务可以并行执行,以提高任务...

  •  阿暄生活 fork/join 全面剖析,你可以不用,但是不能不懂!

    fork/join作为一个并发框架,在jdk7时加入到了java并发包java.util.concurrent中,并在java 8的lambda并行流中充当着底层框架的角色。下面是对fork/join框架的全面剖析。一、fork/join的设计思路 fork/join的设计思路是将一个大任务分解成多个独立的小任务,然后起多线程并行处理这些小任务,处理完得到结...

  •  阿暄生活 fork/join 全面剖析,你可以不用,但是不能不懂!

    fork/join框架是Java并发包中的一个重要组件,尤其在Java 8的并行流中得到了广泛应用。以下是fork/join框架的全面剖析:工作原理:任务分解:fork/join框架的核心思想是将大任务分解成多个小任务,并利用多核处理器并行执行这些小任务。workstealing算法:通过双端队列分配任务,当某个线程完成自己的任务后...

檬味博客在线解答立即免费咨询

Java相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部