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

📄 controllablethread.java

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

/**
 * Abstract class that denotes a thread that can cooperate with a
 * ThreadController and has a Queue, a depth level and a MessageReceiver.
 */

abstract public class ControllableThread extends Thread {
	protected int level;
	protected int id;
	protected Queue queue;
	protected ThreadController tc;
	protected MessageReceiver mr;
	public void setId(int _id) {
		id = _id;
	}
	public void setLevel(int _level) {
		level = _level;
	}
	public void setQueue(Queue _queue) {
       // System.out.println(_queue);
		queue = _queue;
	}
	public void setThreadController(ThreadController _tc) {
		tc = _tc;
	}
	public void setMessageReceiver(MessageReceiver _mr) {
        //System.out.println("kkkk"+_mr.toString());
		mr = _mr;
	}
	public ControllableThread() {
	}
	public void run() {
		// pop new urls from the queue until queue is empty
		for (Object newTask = queue.pop(level);
			 newTask != null;
			 newTask = queue.pop(level)) {
			// Tell the message receiver what we're doing now
			mr.receiveMessage(newTask, id);
			// Process the newTask
			process(newTask);
			// If there are less threads running than it could, try
			// starting more threads
			if (tc.getMaxThreads() > tc.getRunningThreads()) {
				try {
					tc.startThreads();
				} catch (Exception e) {
					System.err.println("[" + id + "] " + e.toString());
				}
			}
		}
		// Notify the ThreadController that we're done
		tc.finished(id);
	}

	/**
	 * The thread invokes the process method for each object in the queue
	 */
	public abstract void process(Object o);
}

⌨️ 快捷键说明

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