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

📄 timecontroller.java

📁 WAP PUSH后台源码,WAP PUSH后台源码
💻 JAVA
字号:
package com.sxit.wap.threads;
/*
计费程序主要是一个线程在后台运行,并定时的完成某些操作
程序采用一个主线程来管理时间表,根据时间表来调度任务线程
所要达到的目的,可以任意配置任务表,在里面添加任务线程。
主线程所维护的时间任务表
class TimeThread {
 String threadName;//任务线程的类名
 Int  timeStep;//间隔的时间
 Char timeStepType;//间隔时间的类型(年/月/日/时/分/秒)
 Date referDate;//参照时间,线程运行的时间与该参照时间的时间差值为时间间隔的整数倍
}
//凡是距离应该记录的时刻的时间间隔小于2个时间间隔单位,则启动线程
*/

public class TimeController extends Thread {
  private long minTimeStep = 1000;//最小的时间间隔
  public TimeController() {
  }
  public static void main(String[] args) {
    TimeController controller = new TimeController();
    controller.start();
  }
  public void run() {
    init();//初始化所有工作
    while (true) {
      try {
        taskManage (); //运行任务管理器
        System.out.println ( "" + System.currentTimeMillis () + "   " + minTimeStep );
        if ( minTimeStep > 0 ) {
          System.out.println("begin sleep");
          this.currentThread ().sleep ( minTimeStep ); //睡眠到一个最近的线程时刻
        } else {
          System.out.println("exit program");
        }
      } catch ( Exception ex ) {
        System.out.println("exception error");
        ex.printStackTrace();
      }
    }
  }
  public void init(){
    //初始化属性表,将所有任务调度到内存中
  }
  public void taskManage() {
    //任务管理器,同时设置需要睡眠的时刻
    TaskTable[] taskList = TaskTable.getTaskList ();
    minTimeStep = Long.MAX_VALUE;
    for ( int i = 0; i < taskList.length; i++ ) {
      long temp = taskList[i].getTimeStep ();
      if (temp <= 0)
        taskList[i].startTask ();
      if ( minTimeStep > temp )
        minTimeStep = temp;
    }
  }

}


⌨️ 快捷键说明

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