MinerQueue.java 访问队列

阅读更多

MinerQueue.java 访问队列

package com.iteye.injavawetrust.miner;

import java.util.HashSet;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Set;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
 * 访问队列
 * 
 * @author InJavaWeTrust
 *
 */
public class MinerQueue {
	
	private static final Log LOG = LogFactory.getLog(MinerQueue.class);
	
	/**
	 * URL队列 保证每一个URL只访问一次
	 */
	private static volatile Set urlSet = new HashSet();
	/**
	 * 待访问队列
* 爬取页面线程从这里取数据 */ private static volatile Queue unVisited = new LinkedList(); /** * 等待提取URL的分析页面队列
* 解析页面线程从这里取数据 */ private static volatile Queue waitingMisering = new LinkedList(); /** * 存储队列
* 存储线程从这里取数据 */ private static volatile Queue store = new LinkedList(); /** * 添加到存储队列 * @param html 爬取页面 */ public synchronized static void addStore(Html html) { store.add(html); } /** * 存储队列出队列 * @return 爬取页面 */ public synchronized static Html storePoll() { return store.poll(); } /** * 存储队列是否为空 * @return */ public static boolean storeIsEmpty() { return store.isEmpty(); } /** * 添加到等待提取URL的分析页面队列 * @param html */ public synchronized static void addWaitingMisering(Html html) { waitingMisering.add(html); } /** * 等待提取URL的分析页面出队列 * @return */ public synchronized static Html waitingMiseringPoll() { return waitingMisering.poll(); } /** * 等待提取URL的分析页面队列大小 * @return */ public static int waitingMiseringSize() { return waitingMisering.size(); } /** * 等待提取URL的分析页面队列是否为空 * @return true-空;false-非空 * @return */ public static boolean waitingMiseringIsEmpty(){ return waitingMisering.isEmpty(); } /** * 添加到URL队列 * @param url */ public synchronized static void addUrlSet(String url) { urlSet.add(url); } /** * 获得URL队列大小 * @return */ public static int getUrlSetSize() { return urlSet.size(); } /** * 得到待访问队列 * @return */ public static Queue getUnVisited() { return unVisited; } /** * 待访问出队列 * @return */ public synchronized static MinerUrl unVisitedPoll() { return unVisited.poll(); } /** * 添加到待访问队列,每个URL只访问一次 * @param html */ public synchronized static void addUnVisited(MinerUrl minerUrl) { if(null != minerUrl && !urlSet.contains(minerUrl.getUrl())) { LOG.info("添加到待访问队列[" + minerUrl.getUrl() + "] 当前第[" + minerUrl.getDepth() + "]层 当前线程[" + Thread.currentThread().getName() + "]"); unVisited.add(minerUrl); } } /** * 判断待访问的队列是否为空 * @return true-空;false-非空 */ public static boolean unVisitedIsEmpty() { return unVisited.isEmpty(); } /** * 待访问的队列大小 * @return */ public static int unVisitedSize(){ return unVisited.size(); } }

 

返回列表

 

 

你可能感兴趣的:(java,jsoup,网络爬虫)