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

📄 workerthreadwithlistener.java

📁 介绍线程的使用方法
💻 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 + -