📄 workerthread.java
字号:
package thread.workqueue;
import java.util.List;
/**
* <p>
* Title:工作队列内部处理处理线程类。
* </p>
*
* <p>
* Description:
* </p>
*
* <p>
* Copyright: Copyright (c) 2004
* </p>
*
* <p>
* Company: netsky
* </p>
*
* @author wdz123@hotmail.com
* @version 1.0
* @see thread.workqueue.WorkQueue
* @see Java 理论与实践:线程池与工作队列 线程池有助于实现最佳资源利用率
* {@link http://www-900.ibm.com/developerWorks/cn/java/j-jtp0730/index.shtml}
*/
class WorkerThread
extends Thread {
private List q;
private boolean stopWork = false;
public WorkerThread(List queue) {
q = queue;
}
public void run() {
Runnable r = null;
while (true) {
synchronized (q) {
if (stopWork){
return;
}
while (q.isEmpty()) {
try {
q.wait();
}
catch (InterruptedException ignored) {
}
}
r = (Runnable) q.remove(0);
}
//可以增加工作任务开始处理前的回调接口
//当然这个工作任务的类型的修改一下,提供相应的方法才可以
//e.g. returncall.beginProcess();
//开始处理任务
try {
r.run();
}
catch (Exception ex) {
}
//可以增加工作任务处理结束的回调接口
//当然这个工作任务的类型的修改一下,提供相应的方法才可以
//e.g. returncall.endProcess();
}
}
/**
* 停止处理新的任务
* **/
public void stopProcess(){
synchronized (q) {
stopWork = true;
}
}
public static void main(String[] args) {
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -