zoukankan      html  css  js  c++  java
  • 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<String> urlSet = new HashSet<String>();
    	/**
    	 * 待访问队列<br>
    	 * 爬取页面线程从这里取数据
    	 */
    	private static volatile Queue<MinerUrl> unVisited = new LinkedList<MinerUrl>();
    	/**
    	 * 等待提取URL的分析页面队列<br>
    	 * 解析页面线程从这里取数据
    	 */
    	private static volatile Queue<Html> waitingMisering = new LinkedList<Html>();
    	/**
    	 * 存储队列<br>
    	 * 存储线程从这里取数据
    	 */
    	private static volatile Queue<Html> store = new LinkedList<Html>();
    	/**
    	 * 添加到存储队列
    	 * @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<MinerUrl> 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();
    	}
    
    }
    

    返回列表

  • 相关阅读:
    Shell 函数
    Linux shell脚本中shift的用法说明
    Python 命令行参数
    浅析 Jenkins 插件开发
    晒一晒Jenkins那些常用插件
    linux系统用vim编写python,实现自动补全
    C语言中printf的用法
    poj 1088 滑雪
    poj 1036 Gangsters
    hdu 1176 免费馅饼
  • 原文地址:https://www.cnblogs.com/new0801/p/6146686.html
Copyright © 2011-2022 走看看