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

📄 tasktable.java

📁 WAP PUSH后台源码,WAP PUSH后台源码
💻 JAVA
字号:
package com.sxit.wap.threads;
import java.io.*;
import java.util.Properties;
import java.util.Enumeration;
import java.util.Date;
import java.util.Vector;
public class TaskTable {
	public static final int YEAR = 0;
	public static final int MONTH = 1;
	public static final int DAY = 2;
	public static final int HOUR = 3;
	public static final int MINUTE = 4;
	public static final int SECOND = 5;

	private String threadName = null;//任务线程的类名
	private long timeStep = 1000;//间隔的时间
	private int timeStepType = YEAR;//间隔时间的类型(年/月/日/时/分/秒)
	private long referDate = 0;//参照时间,线程运行的时间与该参照时间的时间差值为时间间隔的整数倍

	private static boolean isNeedReload = false;
	private static TaskTable[] taskList = null;
	private TaskTable ( String threadName, long timeStep, int timeStepType, java.util.Date date ) {
		this.threadName = threadName;
		this.timeStepType = timeStepType;
		this.timeStep = timeStep;
		this.referDate = date.getTime ();
		java.util.Calendar calendar = java.util.Calendar.getInstance();
		long now = System.currentTimeMillis();
		//将referDate设置成下一个要启动线程的时刻
		while (now > referDate ) {
			referDate = getNextTime(referDate) ;
		}
	}
	public long getNextTime(long source){
		java.util.Calendar calendar = java.util.Calendar.getInstance();
		calendar.setTime (new java.sql.Timestamp (source));
		if (timeStepType == YEAR)
			calendar.add(java.util.Calendar.YEAR,(int)timeStep);
		if (timeStepType == MONTH)
			calendar.add(java.util.Calendar.MONTH,(int)timeStep);
		if (timeStepType == DAY)
			calendar.add(java.util.Calendar.DAY_OF_MONTH,(int)timeStep);
		if (timeStepType == HOUR)
			calendar.add(java.util.Calendar.HOUR,(int)timeStep);
		if (timeStepType == MINUTE)
			calendar.add(java.util.Calendar.MINUTE,(int)timeStep);
		if (timeStepType == SECOND)
			calendar.add(java.util.Calendar.SECOND,(int)timeStep);
		return calendar.getTime().getTime();
	}
	public long getTimeStep () {
		//返回该线程启动所需要的时间,单位为毫秒
		return referDate - System.currentTimeMillis();
	}

	public void startTask () {

		try {
			System.out.println("===================================================================" );
			if ("".equals(threadName) || (threadName ==null))
				return;
			Thread thread = ( Thread ) Class.forName ( this.threadName ).newInstance ();
			thread.start ();
			referDate = getNextTime(referDate) ;
			System.out.println("线程下次运行的时间是:"+ new java.sql.Timestamp (referDate) +"时间间隔是"+timeStep);
			//System.out.println ( "ThreadName :" + this.threadName + "   " + new java.util.Date () + "-------OK" );
		} catch ( Exception ex ) {
			ex.printStackTrace();
			System.out.println ( "Thread :" + this.threadName + "   " + new java.util.Date () + "-------Failed." );
		}
	}

	public void setReload ( boolean isNeedReload ) { //sync
		this.isNeedReload = isNeedReload;
	}

	public static TaskTable[] getTaskList() {//sync
		if ( (taskList == null) || (isNeedReload ==true) ) {
			System.out.println("得到处理任务的列表................................................");
			//获得列表
			Properties properties = new Properties();
			InputStream input = null;
			try {
				//input = new FileInputStream("properties.txt");

				input = new FileInputStream("properties.txt");
				properties.load(input);
				int index = 1;
				Vector vector = new Vector();
				//====================================================================
				while ( true ) {
					String sIndex = Integer.toString ( index ) ;
						String className = properties.getProperty ( "className" + sIndex );
						if ( className == null )
							break;
						className = className.trim ();

						String sTime = properties.getProperty ( "timeStep" + sIndex ).trim ();

						String sType = properties.getProperty ( "timeSteptype" + sIndex ).trim ();

						String sDate = properties.getProperty ( "referDate" + sIndex ).trim ();

						long time = Long.parseLong ( sTime );
						int type = Integer.parseInt ( sType );
						Date date = new java.text.SimpleDateFormat ( "yyyy-MM-dd hh:mm:ss" ).parse ( sDate );
						vector.addElement ( new TaskTable ( className, time, type, date ) );

						index++;
					}

				taskList = new TaskTable[ vector.size ()];
				for ( int j = 0; j < taskList.length; j++ ) {
					taskList[j] = (TaskTable)vector.elementAt(j);
				}
				//====================================================================
			} catch ( Exception ex ) {
				ex.printStackTrace ();
			} finally {
				try {
					input.close ();
				} catch ( Exception eio ) {
				}
			}
			isNeedReload = false;
		}
		return taskList;
	}
}

⌨️ 快捷键说明

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