最近做了定时模块,程序的实现大抵如下,每个定时任务包装成一个实现了Runnable的类,也就是业务逻辑都写在run方法中,写完之后要移植到linux系统,过程有好多需要留意的地方,经整理如下(以最简单的demo为例,仅作功能说明,不含任务业务相关内容)
一 编写java代码:
package com.test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Date;
import org.apache.log4j.Logger;
import sun.rmi.runtime.Log;
public class MyThread extends Thread{
public static boolean runFlag=true;
public void run() {
Logger logger=Logger.getLogger(MyThread.class);
System.out.println(logger.getClass().getName());
while(runFlag){
for(int i=0;i<10;i++){
System.out.println("tt---"+i);
}
System.out.println("now Time"+new Date());
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static void main(String[] args) {
new MyThread().start();
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
try {
while(br.readLine().equalsIgnoreCase("stoptt")){
runFlag=false;
System.out.println("will stoptt");
break;
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(br!=null){
try {
br.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
二 编写脚本文件(tt.sh)
#!/bin/sh
$JAVA_HOME/bin/java -cp ./tt.jar:./log4j-1.2.16.jar com.test.MyThread
三 对java程序进行打包,打包文件如下(附件中的build.xml文件)
<?xml version = "1.0" ?>
<project default ="compile" name="tt">
<description>
Mps console web project
</description>
<property name="build" value="build"/>
<property name="author" value="luk bob"/>
<target name="compile">
<javac srcdir="src"
destdir="bin"/>
<jar destfile="build/tt.jar"
basedir="bin" >
<manifest>
<attribute name="Build-By"
value="${user.name}"/>
</manifest>
</jar>
</target>
</project>
四 将第三步打成的jar包,以及运行时所依赖的jar包,tt.sh上传到安装了linux系统的计算机,并将它们置于同一目录
五 运行脚本命令,即在命令行中输入sh tt.sh就可以看到效果了!