在java中使用任务调度定时进行运行环境检测

在java中,可以使用Timer和TimerTask进行任务调度。

Timer和TimerTask可以做为实现线程的第三种方式,前两中方式分别是继承自Thread类和实现Runnable接口。
Timer是一种线程设施,用于安排以后在后台线程中执行的任务。可安排任务执行一次,或者定期重复执行,可以看成一个定时器,可以调度TimerTask。TimerTask是一个抽象类,实现了Runnable接口,所以具备了多线程的能力。

下面的案例是使用Timer和TimerTask进行简单的定时任务调度,这个任务是进行java运行环境检测。

--------------------------------------JavaEnvironment.java-------------------------------------

package com.wx.pub;

import java.io.Serializable;

/**
 * 实体类,保存java运行环境信息
 * @author Administrator
 * 20160528
 */
public class JavaEnvironment implements Serializable{

	private static final long serialVersionUID = 1L;
	private String userName;   //当前登录用户名
	private String osName;     //操作系统名
	private String osVersion;  //操作系统版本
	private String osJaGou;    //操作系统架构
	private String javaFactory;  //JAVA的厂商名
	private String javaVersion;  //JAVA的版本号
	private String userHome;     //当前登录用户的主目录
	private String totalMemory;   //当前JVM的总内存
	private String maxMemory;    //当前JVM最大可用内存
	private String freeMemory;   //当前JVM可用的空闲内存
	
	private String clientHostName;   //主机名
	private String clientIP;         //ip地址
	
	public String getClientHostName() {
		return clientHostName;
	}
	public void setClientHostName(String clientHostName) {
		this.clientHostName = clientHostName;
	}
	public String getClientIP() {
		return clientIP;
	}
	public void setClientIP(String clientIP) {
		this.clientIP = clientIP;
	}
	
	public String getFreeMemory() {
		return freeMemory;
	}
	public void setFreeMemory(String freeMemory) {
		this.freeMemory = freeMemory;
	}
	public String getJavaFactory() {
		return javaFactory;
	}
	public void setJavaFactory(String javaFactory) {
		this.javaFactory = javaFactory;
	}
	public String getJavaVersion() {
		return javaVersion;
	}
	public void setJavaVersion(String javaVersion) {
		this.javaVersion = javaVersion;
	}
	public String getMaxMemory() {
		return maxMemory;
	}
	public void setMaxMemory(String maxMemory) {
		this.maxMemory = maxMemory;
	}
	public String getOsJaGou() {
		return osJaGou;
	}
	public void setOsJaGou(String osJaGou) {
		this.osJaGou = osJaGou;
	}
	public String getOsName() {
		return osName;
	}
	public void setOsName(String osName) {
		this.osName = osName;
	}
	public String getOsVersion() {
		return osVersion;
	}
	public void setOsVersion(String osVersion) {
		this.osVersion = osVersion;
	}
	public String getTotalMemory() {
		return totalMemory;
	}
	public void setTotalMemory(String totalMemory) {
		this.totalMemory = totalMemory;
	}
	public String getUserHome() {
		return userHome;
	}
	public void setUserHome(String userHome) {
		this.userHome = userHome;
	}
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String toString(){
		return  userName+" \""+ 
		 osName+"\" "+
		 osVersion +" "+
		 osJaGou +" "+
		 userHome +" "+
		 clientHostName+" "+
		 clientIP+" \n"+
		 javaFactory +" "+
		 javaVersion +" "+
		 totalMemory +" "+
		 maxMemory +" "+
		 freeMemory+"\n-----------这是分隔线---------------\n"
		 ;		
	}
}
--------------------------------------------CheckEnvOnce.java---------------------------------------------
package com.wx.pub;

import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Timer;
import java.util.TimerTask;

/**
 * 定时进行运行环境检查
 * @author Administrator
 * 20160528
 */
public class CheckEnvOnce {
	public static void main(String[] args) {
		//三秒后执行一次
		//new Timer().schedule(new CheckTask1(), 3000);
		//三秒后,每隔一秒执行一次
		new Timer().schedule(new CheckTask1(), 3000,1000);
	}
}

class CheckTask1 extends TimerTask{
	public void run() {
		try {
			JavaEnvironment javaInfo=new JavaEnvironment();
			javaInfo.setUserName(System.getProperty("user.name"));
			javaInfo.setOsName(System.getProperty("os.name"));
			javaInfo.setOsVersion(System.getProperty("os.version"));
			javaInfo.setOsJaGou(System.getProperty("os.arch"));
			javaInfo.setJavaFactory(System.getProperty("java.vendor"));
			javaInfo.setJavaVersion(System.getProperty("java.version"));
			javaInfo.setUserHome(System.getProperty("user.home"));		
			javaInfo.setTotalMemory((Runtime.getRuntime().totalMemory())/1024.0/1024.0+"mb");
			javaInfo.setMaxMemory(Runtime.getRuntime().maxMemory()/1024.0/1024.0+"mb");
			javaInfo.setFreeMemory(Runtime.getRuntime().freeMemory()/1024.0/1024.0+"mb");
			javaInfo.setClientIP(InetAddress.getLocalHost().getHostAddress());
			javaInfo.setClientHostName(InetAddress.getLocalHost().getHostName());
			System.out.println(javaInfo);
		} catch (UnknownHostException e) {
			e.printStackTrace();
		}
	}
}
运行结果如下:

Administrator "Windows Vista" 6.1 x86 C:\Users\Administrator USER-20170426CY 169.254.130.6 
Sun Microsystems Inc. 1.6.0_13 4.9375mb 63.5625mb 4.652458190917969mb
-----------这是分隔线---------------

Administrator "Windows Vista" 6.1 x86 C:\Users\Administrator USER-20170426CY 169.254.130.6 
Sun Microsystems Inc. 1.6.0_13 4.9375mb 63.5625mb 4.6231231689453125mb
-----------这是分隔线---------------

Administrator "Windows Vista" 6.1 x86 C:\Users\Administrator USER-20170426CY 169.254.130.6 
Sun Microsystems Inc. 1.6.0_13 4.9375mb 63.5625mb 4.6231231689453125mb
-----------这是分隔线---------------

Administrator "Windows Vista" 6.1 x86 C:\Users\Administrator USER-20170426CY 169.254.130.6 
Sun Microsystems Inc. 1.6.0_13 4.9375mb 63.5625mb 4.605140686035156mb
-----------这是分隔线---------------

Administrator "Windows Vista" 6.1 x86 C:\Users\Administrator USER-20170426CY 169.254.130.6 
Sun Microsystems Inc. 1.6.0_13 4.9375mb 63.5625mb 4.605140686035156mb
-----------这是分隔线---------------

Administrator "Windows Vista" 6.1 x86 C:\Users\Administrator USER-20170426CY 169.254.130.6 
Sun Microsystems Inc. 1.6.0_13 4.9375mb 63.5625mb 4.605140686035156mb
-----------这是分隔线---------------

Administrator "Windows Vista" 6.1 x86 C:\Users\Administrator USER-20170426CY 169.254.130.6 
Sun Microsystems Inc. 1.6.0_13 4.9375mb 63.5625mb 4.605140686035156mb
-----------这是分隔线---------------

Administrator "Windows Vista" 6.1 x86 C:\Users\Administrator USER-20170426CY 169.254.130.6 
Sun Microsystems Inc. 1.6.0_13 4.9375mb 63.5625mb 4.587593078613281mb
-----------这是分隔线---------------
。。。。。。

要使用更强大的调度工具,请参考Quartz框架。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

御前两把刀刀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值