2.9 線程與任務

  Java中建立一個線程和對線程管理不是什麼複雜的事情,但是在一個系統中一般都會有大量的定時任務,因此我們需要建立一個機制能方便的擴展各種定時任務。

  首先建立基本線程BaseThread,它完成基本的線程的基本功能,包括日誌信息和狀態監控,只是間隔時間和要完成的任務不能確定,我們建立2個抽象方法:

  abstract public long getInterval() throws Exception;//間隔時間

  abstract public void doTask() throws Exception;//要完成的任務

  我不想系統存在的線程過多,於是我把優先級不高的一些線程封裝成任務,由一個線程依次執行。

  ArrayList tasks;//定時(次數)執行的任務的集合
  /**
   * 增加一個定時任務
   * @param timerTask    定時任務
   */
  public void addTimerTask(Task task){
    tasks.add(task);
  }
  Task是一個任務接口,就一個方法:

  /**
   * 檢查運行
   * @param ds   數據源
   * @throws java.lang.Exception   Exception
   */
  public void runTask(DataSource ds) throws Exception;

  BaseTimesTask是Task的一個基本實現,它完成基本的計次任務(循環多少次執行一次),它實現公共的部分,只留下具體執行的方法和計次的參數名由子類實現:

  /**
   * 運行
   * @param ds   數據源
   */
  abstract public void run(DataSource ds);
  /**
   * 取Local.properties配置文件中的參數名
   * @return    參數名
   */
  public String getParameterName(){
    return null;//可以沒有,表示每次都執行
  }
  需要說明的是:run(DataSource ds)不拋出例外,必須自己處理,因爲要避免一個任務發生錯誤影響其它任務的執行。

發佈了36 篇原創文章 · 獲贊 4 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章