1.经过线程门实现Java并发编程

IT168 专稿】线程门(thread gate)模式是控制线程并发的一个有效工具,可是不少开发者对它并不熟悉。如同交通讯号灯可让汽车在十字路口有序通行同样,线程门能够根据给定条件阻止或容许线程执行。Obi Ezechukwu在本文中为咱们介绍了线程门的概念,而后经过一个一个多线程素数生成器告诉咱们如何使用它。java

  多线程和并发编程曾经是编程高手们才涉足的领域,可是随着多核处理器的出现,以及应用程序需求的更复杂,还有javax.util.concurrent包的出现,这种状况已经发生了变化。如今,企业应用开发者须要了解Java语言中不一样的并发机制和构思。当面临须要非教科书式、高度创新的并发构思才能解决的问题时,这种需求更显迫切。这种情形下,仅仅理解Java语言和标准SDK的并发机制已经不能知足须要;你必须可以使用这些工具来编写程序,实现定制化的并发控制。程序员

  在本篇文章中,咱们将了解一我的们较少讨论的并发模式,一般被称为线程门。如同现实世界中门的概念同样,门实例能够打开或关闭,从而实现容许或阻止线程执行。它基于某些断定式的真值来实现这个操做。编程

  下面我将大致介绍一下基于通讯流模型的线程门,而后解释一下如何创建示例应用(一个多线程素数生成器)的开发环境。文章的剩余部分将经过实例方式让你了解线程门模式。多线程

  线程门概述并发

  与线程门很是相似的一个例子是运行在不少十字路口的交通讯号灯系统。当红灯亮的时候,汽车必须停车等候,直到信号改变;当绿灯亮的时候,汽车能够自由通行。 交通讯号灯被设计用来实现交通的交叉进行,在不须要交叉通行的地方它是没有用武之地的。对于程序员来讲,你能够把交通讯号灯看做控制器,它可让双向交通共享使用同一小部分道路,若是没有它,交通线路交叉的地方将是一个很是危险的地方。工具

  一样,线程门一般最适合的状况是:当一个线程集处于激活状态时,其它线程不能被执行。换句话说,相互竞争的线程集依赖于某些真值断定式的值,断定式的每个不一样的值只触发一个线程集,而强制其它处于挂起状态。注意此处的重点是针对一系列或一组线程而并不是单个线程。实际上,咱们关注的重点是多个线程共享访问一个底层资源的情形,并且这些线程根据对资源所执行的操做,被划分红不一样的集合。线程

  很好的一个例子是生产者—消费者(producer-consumer)流程,某些线程负责制造另外一组线程所使用的数据;共享资源最多是不一样线程集所使用的切换机制(数据总线);而决定线程处理的真值断定式是数据量。若是数据做为一个与生产过程相似的流程部分被进行入队操做,而后该数据被不一样过程使用或进行出队操做,一个内存请求队列有时候可能适合此类模式。设计

  生产者-消费者模型是描述线程门概念使用的一个很好例子。对于绝大多数程序员来讲,经过一个示例程序或许可以更轻松理解一个概念。在本篇文章中,问题还应该是如何轻松的实现任务分解和并行操做,由于重点是对其建立一个多线程解决方案。本篇文章的示例应用将实现上述目标。队列

相关文章
相关标签/搜索