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

来源:互联网 发布:jquery.md5.js cdn 编辑:程序博客网 时间:2024/06/05 14:24

在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框架。