Java实现的线程池、消息队列功能方法
分类:Java
来源:网络
时间:2010-09-14 23:41:03
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; } |
- 默认分类(20)
- J2EE(25)
- Java(56)
- PHP(55)
- SEO(10)
- 网页设计(20)
- 网站建设(37)
- 数据库(7)
- JavaScript(17)
- JQuery(6)
- MySQL(20)
- SQL Server(6)
- Access(1)
- Oracle(6)
- office(6)
- Dreamweaver(4)
- Photoshop(12)
- Flash(9)
- Fireworks(13)
- CSS(14)
- HTML(4)
- .NET(7)
- ASP(2)
- DB2(1)
- Ajax(2)
- Linux(12)
- Struts(7)
- Hibernate(8)
- Spring(2)
- Jsp(22)
- Asp(8)
- C#(3)
- C++(1)
- 网络安全(5)
- 软件工程(7)
- XML(1)
- English(2)
- 计算机等级考试(2)
- 计算机病毒(4)
- 个人日志(76)
- 互联网(15)
- ActionScript(10)
- Android(3)
- 数据结构与算法(1)
- 游戏策略(3)
- 美文翻译(2)
- 编程开发(19)
- 计算机应用(4)
- 计算机(10)
- Unity3d(6)
- 其他(1)
- egret(1)