一个简单的Thread缓冲池的实现
作者: xuyy_cn, 出处:赛迪网, 责任编辑: 李春禹,
2008-02-14 11:21
在应用中,我们常常需要Thread缓冲池来做一些事以提高程序的效率和并发性。本文演示了如何利用Queue这种数据结构实现一个简单的Thread缓冲池。
可以注意一下get和put方法中while的使用,如果换成if是会有问题的。这是个很容易犯的错误。;-)
在以上代码中使用了ExceptionAdapter这个类,它的作用是把一个checked Exception包装成RuntimeException。详细的说明可以参考我的避免在Java中使用Checked Exception一文。
接下来我们需要一个对象来表现Thread缓冲池所要执行的任务。可以发现JDK中的Runnable interface非常合适这个角色。
最后,剩下工作线程的实现就很简单了:从SyncQueue里取出一个Runnable对象并执行它。
| public class Worker implements Runnable { public Worker(SyncQueue queue) { _queue = queue; } public void run() { while (true) { Runnable task = (Runnable) _queue.get(); task.run(); } } protected SyncQueue _queue = null; } |
//构造Thread缓冲池
| SyncQueue queue = new SyncQueue(10); for (int i = 0; i < 5; i ++) { new Thread(new Worker(queue)).start(); } |
| Runnable task = new MyTask(); queue.put(task); |
- 本文关键词:

