展开全部

Java并发框架java.util.concurrent是JDK5中引入到标准库中的(采用的32313133353236313431303231363533e78988e69d8331333363366135是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”类则一般通过一个单锁来防止对集合的所有访问,开销大且伸缩性差。

java的并发框架_java并发框架有哪些相关推荐

  1. java的框架_java 三大框架——spring

    2.Sping架构 Spring框架是分模块存在,除了最核心的Spring Core Container(即Spring容器)是必要模块之外,其他模块都是可选,视需要而定. 官方文档Spring4.0 ...

  2. java 简单 框架_java简单框架设计

    设计框架包可以作为一个工具给大家用,需要有完全不同设计思路给出来,不同于我们去做一个web服务.网站. 或者一个业务微服务,需要从原来使用视角转换成一个构建者视角. 框架或者工具,更多是框架来管理或者 ...

  3. java fork join原理_Java并发Fork-Join框架原理解析

    1.什么是Foirk/Join框架 Fork/Join框架是Java7提供用于并行执行任务的框架,是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架. 2.什么是并行流与顺 ...

  4. java disruptor压测_Java并发框架Disruptor实现原理与源码分析(二) 缓存行填充与CAS操作...

    ##缓存行填充 关于缓存行填充在我个人的印象里面第一次看到是在Java的java.util.concurrent包中,因为当时很好奇其用法背后的逻辑,所以查了很多资料才明白到底是怎么回事*(也许事实上 ...

  5. java编程executor框架_Java并发编程 - Executor框架(一)Executor,

    1.并发编程的一种编程方式是把任务拆分为一些列的小任务,即Runnable,然后将这些任务提交给一个Executor执行, Executor.execute(Runnalbe) .Executor在执 ...

  6. java并发编程核心方法与框架_Java并发编程核心方法与框架-Future和Callable的使用...

    Callable接口与Runnable接口对比的主要优点是Callable接口可以通过Future获取返回值.但是Future接口调用get()方法取得结果时是阻塞的,如果调用Future对象的get ...

  7. 线程池框架_Java并发——Executor框架详解(Executor框架结构与框架成员)

    一.什么是Executor框架? 我们知道线程池就是线程的集合,线程池集中管理线程,以实现线程的重用,降低资源消耗,提高响应速度等.线程用于执行异步任务,单个的线程既是工作单元也是执行机制,从JDK1 ...

  8. java中解决脏读_java并发编程学习之脏读代码示例及处理

    使用interrupt()中断线程     当一个线程运行时,另一个线程可以调用对应的Thread对象的interrupt()方法来中断它,该方法只是在目标线程中设置一个标志,表示它已经被中断,并立即 ...

  9. java并发编程并发容器_Java并发编程:同步容器

    为了方便编写出线程安全的程序,Java里面提供了一些线程安全类和并发工具,比如:同步容器.并发容器.阻塞队列.Synchronizer(比如CountDownLatch).今天我们就来讨论下同步容器. ...

最新文章

  1. 区区几行Python代码,一分钟搞定一天工作量
  2. onkeyup,onkeydown和onkeypress的区别介绍
  3. STM32 SPI难点浅析
  4. Hashtable:仅有两列的表
  5. 网络资源(1) - Hadoop视频
  6. 更改Mysql5.7的默认编码为utf8解决database为latin1无法修改问题
  7. 启达传媒-微信小程序|微信小程序工具|微信小程序开发|微信小程序制作
  8. php goto 代码还原_【表哥有话说 第58期】代码审计思路小结
  9. ResNet 残差神经网络
  10. sql查询、删除重复相同数据的语句或只保留一条数据
  11. 新型开关电源优化设计与实例详解全书.pdf_开关电源工作时,如何抑制纹波和减小高频噪声?...
  12. 论文选题、标题、摘要怎么写
  13. 为什么正则化能减少模型过拟合程度
  14. 乐酷工作室孙志伟:Testin云测试有广度有深度 省钱省力值得信赖
  15. 大数据应用型产品设计方法及行业案例介绍(附110页PPT)
  16. 语义分割之边缘准确率提升
  17. 教会微信:突破文件发送100M限制
  18. [附源码]java毕业设计在线视频网站
  19. 网络研讨会的邀请:丑女大翻身——用bbed工具对Oracle进行微整形
  20. 水果药理、吃水果治病

热门文章

  1. 【斗医】【13】Web应用开发20天
  2. 运维自动化之Cobbler安装配置
  3. RGB_YUV_YCbCr
  4. Cisco访问控制列表配置指南
  5. 如何给Pycharm加上头行 # *_*coding:utf-8 *_*?
  6. 20172318 2016-2017-2 《Java程序设计》第一周学习总结
  7. JBPM4.4_jBPM4.4应用(与Spring集成自行控制事务等)
  8. AlwaysOn只读路由配置
  9. VirtualBox中为WinXP虚拟机添加主体机共享
  10. 使用RSClientPrint直接打印本地RDLC报表