德语八级什么水平:Java实现的线程池、消息队列功能方法
来源:百度文库 编辑:偶看新闻 时间:2024/05/04 22:44:31
Java实现的线程池、消息队列功能方法
作者: 佚名, 出处:IT专家网, 责任编辑: 谢妍妍, 2010-02-26 07:00本文介绍Java实现的线程池、消息队列功能方法。
ThreadPoolManager类:负责管理线程池,调用轮询的线程来访问字符串缓冲区的内容,维护缓冲区,当线程池溢出时抛出的Runnable任务被加入到字符缓冲区。
public class ThreadPoolManager
{
private static ThreadPoolManager tpm = new ThreadPoolManager();
// 线程池维护线程的最少数量
private final static int CORE_POOL_SIZE = 4;
// 线程池维护线程的最大数量
private final static int MAX_POOL_SIZE = 10;
// 线程池维护线程所允许的空闲时间
private final static int KEEP_ALIVE_TIME = 0;
// 线程池所使用的缓冲队列大小
private final static int WORK_QUEUE_SIZE = 10;
// 消息缓冲队列
Queue msgQueue = new LinkedList();
// 访问消息缓存的调度线程
final Runnable accessBufferThread = new Runnable()
{
public void run()
{
// 查看是否有待定请求,如果有,则创建一个新的AccessDBThread,并添加到线程池中
if( hasMoreAcquire() )
{
String msg = ( String ) msgQueue.poll();
Runnable task = new AccessDBThread( msg );
threadPool.execute( task );
}
}
};
final RejectedExecutionHandler handler = new RejectedExecutionHandler()
{
public void rejectedExecution( Runnable r, ThreadPoolExecutor executor )
{
System.out.println(((AccessDBThread )r).getMsg()+"消息放入队列中重新等待执行");
msgQueue.offer((( AccessDBThread ) r ).getMsg() );
}
};
// 管理数据库访问的线程池
final ThreadPoolExecutor threadPool = new ThreadPoolExecutor(
CORE_POOL_SIZE, MAX_POOL_SIZE, KEEP_ALIVE_TIME, TimeUnit.SECONDS,
new ArrayBlockingQueue( WORK_QUEUE_SIZE ), this.handler );
// 调度线程池
final ScheduledExecutorService scheduler = Executors
.newScheduledThreadPool( 1 );
final ScheduledFuture taskHandler = scheduler.scheduleAtFixedRate(
accessBufferThread, 0, 1, TimeUnit.SECONDS );
public static ThreadPoolManager newInstance()
{
return tpm;
}
JAVA 队列的实现
关于一个JAVA功能的实现
急需支持线程安全的队列源码,VC下使用
一个用C++实现的队列问题
链栈和链队列的实现
JAVA:线程的生命周期是什么
数据库搜索功能的实现方法
求实现搜索功能的好方法
java的一个程序,它实现了什么功能,
java中charAt()实现怎样的功能
java实现自动生成流水号的方法?
谁有基于SIP用java实现消息传递的流程图啊
JSP, JAVA 怎么样才能实现这个功能
JAVA 用程序实现 按键盘 功能
迅雷修改线程的方法
线程同步的方法有哪几种?
如何结束线程的方法?
JAVA类中可以完成钩子功能的方法?
实现线程同步的关键字为( )
java 中hashtable类与 map接口实现的功能有什么不同??
=》如何用java实现如下功能的编程(见补充说明)?
请问在JAVA中怎么实现在控制台下press any key to continue的功能?
求不支持电子书功能和java功能的手机看电子书的方法
JAVA中线程池 谁可以给个详细的例子吗??