知识大全 一个简单Thread缓冲池的实现[1]

Posted hr

篇首语:愚昧从来没有给人带来幸福;幸福的根源在于知识。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 一个简单Thread缓冲池的实现[1]相关的知识,希望对你有一定的参考价值。

Java进阶:一个简单Thread缓冲池的实现[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  在应用中 我们常常需要Thread缓冲池来做一些事以提高程序的效率和并发性 本文演示了如何利用Queue这种数据结构实现一个简单的Thread缓冲池

  一个Thread缓冲池可以设计成以下这样 缓冲池由几个工作Thread和一个Queue组成 Client负责把任务放到Queue里面(put方法) 而工作Thread就依次取出这些任务并执行它们(get方法)

  Queue的一个经典实现是使用一个循环数组(这个实现在很多数据结构的书上都有介绍) 如一个大小为size的数组 这个循环数组可以被想象成首尾相连的一个环 oldest指向Queue中最老的数据所在的位置 next指向下一个可以放新数据的位置

  放入一个新数据到next的位置后 需要更新next next = (next + ) % size;

  从oldest位置取出一个数据后 需要更新oldest oldest = (oldest + ) % size;

  当oldest == next的时候 Queue为空

  当(next + ) % size == oldest的时候 Queue为满

  (注意 为了区分Queue为空和为满的情况 实际上Queue里面最多能放size 个数据 )

  因为这个Queue会同时被多个线程访问 需要考虑在这种情况下Queue如何工作 首先 Queue需要是线程安全的 可以用Java里的synchronized关键字来确保同时只有一个Thread在访问Queue

  我们还可以注意到当Queue为空的时候 get操作是无法进行的;当Queue为满的时候 put操作又是无法进行的 在多线程访问遇到这种情况时 一般希望执行操作的线程可以等待(block)直到该操作可以进行下去 比如 但一个Thread在一个空Queue上执行get方法的时候 这个 Thread应当等待(block) 直到另外的Thread执行该Queue的put方法后 再继续执行下去 在Java里面 Object对象的 wait () notify()方法提供了这样的功能

cha138/Article/program/Java/hx/201311/27224

相关参考

知识大全 一个简单Thread缓冲池的实现[3]

Java进阶:一个简单Thread缓冲池的实现[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 一个简单Thread缓冲池的实现[2]

Java进阶:一个简单Thread缓冲池的实现[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 一个简单的 Thread 缓冲池的实现

一个简单的Thread缓冲池的实现  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在应用中我们常

知识大全 用java 实现一个简单的web 服务器

  importjavaioIOException;importServerSocket;importSocket;  /** *Socket+Thread+FileIO *&nb

知识大全 多线程从线程继承

    为创建一个线程最简单的方法就是从Thread类继承这个类包含了创建和运行线程所需的一切东西Thread最重要的方法是run()但为了使用run()必须对其进行过载或者覆蓋使其能充分按自己的吩咐

知识大全 通过继承Thread创建多线程

通过继承Thread创建多线程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!一个进程中可以包含一个

知识大全 Java学习:线程池的简单构建

Java学习:线程池的简单构建  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  现在服务器端的应用

知识大全 一个在程序中实现plugin机制的简单例子

  在JDK中提供了一个日志记录包javautillogging它可以对程序中的日志记录进行相当复杂的控制例如通过它可以指定日志的级别和日志的位置(控制台文件套接字内存缓冲区)也可以创建子记录器通过它

知识大全 delphi 缓冲画图(内存画图)解决画图闪烁问题[1]

  很多朋友在做绘图程序的时候往往出现屏幕不停刷新产生闪烁的问题这里就告诉大家一个解决办法缓冲绘图如果有人是用取反画图解决这个问题那么在画直线的时候容易出现斑点效果不是很好如果是图片很大那么缓冲画图是

股票池的构建

股票池的构建在确认了自己所感兴趣的行业后,下一步在这1、2个行业里就要挑选股票构建一个私人的股票池。入选股票池的股票包括以下这些目标:1、高风险股票。也就是高beta系数的股票,一般是小盘股、投机股。