之前写了一个爬虫程序,后来改成多线程版本,但遇到了一个问题:始终只有一个线程能从任务队列中获得任务,而我想要的是全部线程都能拿到任务并工作,求高手解答。任务分配代码如下:private void produce(){
logger.info(name + " 准备获取任务");
while(taskQueue.size() > 0){
try {
logger.info(name + " 正在获取任务...");
URLEntity ue = taskQueue.poll();
if(null != ue){
logger.info(name + " 获取到任务:" + ue.getUrl());
HyperLinkCrawlerWorker.extractUrl(ue, encoding, connectTimeout, readTimeout, handler, maxDepth);
}
} catch (Exception e) {
logger.error("获取任务出错:", e);
}
}
}