【发布时间】:2016-04-18 16:59:32
【问题描述】:
我创建了一个线程池,每个线程从队列中获取一个对象并对其进行处理。我不确定我是否以正确的方式实施它。代码如下:
public class HandlerThreadsPool<T> {
private BlockingQueue<T> queue;
private IQueueObjectHandler<T> objectHandler;
private class ThreadClass implements Runnable {
@Override
public void run() {
while (true) {
objectHandler.handleItem(queue.take());
}
}
}
public HandlerThreadsPool(int numberOfThreads, BlockingQueue<T> queue, IQueueObjectHandler<T> dataHandler){
this.queue = queue;
this.objectHandler = dataHandler;
ExecutorService service = Executors.newFixedThreadPool(numberOfThreads);
for (int i = 0; i < numberOfThreads; i++)
service.execute(new ThreadClass());
service.shutdown();
}
}
dataHandler 处理对象做一些事情。以这种方式正确吗? 谢谢
【问题讨论】:
标签: java multithreading queue threadpool threadpoolexecutor