⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 objectqueue.java

📁 Java Crawler with domain knowledge path
💻 JAVA
字号:
package ie.vnit.threads;
import java.util.*;

/**
 * Simple "reference" implementation of the queue interface
 * In addition to the interface, an object "data" is supported
 * for carrying additional data over threads.
 * By default, the queue supports 4 levels and an unlimited
 * number of elements. The number of elements is unlimited when
 * set to -1. A limited number of elements and a different
 * number of levels can be specified in the appropriate constructors.
 *
 
 */

public class ObjectQueue implements Queue {

	Object data;
	Set gatheredElements;
	Set processedElements;
	LinkedList queues[];
	int mx;
	int nq;

	public synchronized void setData(Object o) {
		data = o;
	}

	public synchronized Object getData() {
		return data;
	}

	public ObjectQueue(int _nq, int _mx) {
		nq = _nq;
		mx = _mx;
		queues = new LinkedList[nq];
		for (int n = 0; n < nq; n++) {
			queues[n] = new LinkedList();
		}
	}

	public ObjectQueue(int _nq) {
		nq = _nq;
		mx = -1;
		queues = new LinkedList[nq];
		for (int n = 0; n < nq; n++) {
			queues[n] = new LinkedList();
		}
	}

	public ObjectQueue() {
		nq = 4;
		mx = -1;
		queues = new LinkedList[nq];
		for (int n = 0; n < nq; n++) {
			queues[n] = new LinkedList();
		}
	}

	public Set getGatheredElements() {
		return gatheredElements;
	}

	public Set getProcessedElements() {
		return processedElements;
	}

	public int getQueueSize(int level) {
		if (level < 0 || level >= nq)
			return 0;
		else
			return queues[level].size();
	}

	public int getProcessedSize() {
		return processedElements.size();
	}

	public int getGatheredSize() {
		return gatheredElements.size();
	}

	public void setMaxElements(int elements) {
		mx = elements;
	}

	public synchronized Object pop(int level) {
		if (level < 0 || level >= nq)
			return null;
		else if (queues[level].size() == 0)
			return null;
		else
			return queues[level].removeFirst();
	}

	public synchronized boolean push(Object task, int level) {
		if (mx != -1 && mx <= gatheredElements.size())
			return false;
		if (level < 0 || level >= nq)
			return false;
		queues[level].addLast(task);
		return true;
	}

	public synchronized void clear() {
		for (int n = 0; n < nq; n++)
			queues[n].clear();
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -