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