📄 timecontroller.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 + -