import java.util.Timer;
public class test3 { public static Timer timer = null; static {
timer = new Timer("czk");
} public static Timer getTimer() {
if (timer != null) {
return timer;
} else {
return null;
}
} public static void setSleep() throws Exception {
if (timer != null) {
timer.cancel();
}
}
}
import java.util.Timer;
import java.util.TimerTask;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import com.czk.main.test3;public class Listener implements ServletContextListener {
private Timer timer = test3.getTimer();
public void contextDestroyed(ServletContextEvent e) { timer.cancel();
}
} } public void contextInitialized(ServletContextEvent e) { timer.schedule(Inspection(), 0, 500);
}
private TimerTask Inspection() { TimerTask tt = new TimerTask() { @Override
public void run() {
for (int i = 0; i < 100; i++) {
try {
System.out.println(i);
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
};
return tt;
}
}应用启动时候会执行这个定时器,循环打印1-100.
但是怎么去停止呢。import java.util.Timer;
public class test { public static void main(String[] args) throws Exception {
Timer timer1 = test3.getTimer();
Timer timer2 = test3.getTimer();
Timer timer3 = test3.getTimer();
System.out.println(timer1.equals(timer2));
System.out.println(timer1.equals(timer3));
timer1.cancel();
}
}打印的都是true。
timer1,timer2,timer3 的引用都是一样的。
请教高手怎么去停止。
public class test3 { public static Timer timer = null; static {
timer = new Timer("czk");
} public static Timer getTimer() {
if (timer != null) {
return timer;
} else {
return null;
}
} public static void setSleep() throws Exception {
if (timer != null) {
timer.cancel();
}
}
}
import java.util.Timer;
import java.util.TimerTask;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import com.czk.main.test3;public class Listener implements ServletContextListener {
private Timer timer = test3.getTimer();
public void contextDestroyed(ServletContextEvent e) { timer.cancel();
}
} } public void contextInitialized(ServletContextEvent e) { timer.schedule(Inspection(), 0, 500);
}
private TimerTask Inspection() { TimerTask tt = new TimerTask() { @Override
public void run() {
for (int i = 0; i < 100; i++) {
try {
System.out.println(i);
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
};
return tt;
}
}应用启动时候会执行这个定时器,循环打印1-100.
但是怎么去停止呢。import java.util.Timer;
public class test { public static void main(String[] args) throws Exception {
Timer timer1 = test3.getTimer();
Timer timer2 = test3.getTimer();
Timer timer3 = test3.getTimer();
System.out.println(timer1.equals(timer2));
System.out.println(timer1.equals(timer3));
timer1.cancel();
}
}打印的都是true。
timer1,timer2,timer3 的引用都是一样的。
请教高手怎么去停止。
启动tomcat 就启动了。 怎么停止啊。
public class test {
public static void main(String[] args) throws Exception {
Timer timer1 = test3.getTimer();
Timer timer2 = test3.getTimer();
Timer timer3 = test3.getTimer();
System.out.println(timer1.equals(timer2));
System.out.println(timer1.equals(timer3));
timer1.cancel();
}
}我这样停不行吗。为什么呢
怎么停都可以。只要能停。停了之后还能重新启动不?
public class Main {
public static void main(String[] args) {
Timer timer = new Timer();
timer.schedule(new DateTask(), 5000);
System.out.println("现在时间:" + new Date()); try {
Thread.sleep(8000);
}
catch(InterruptedException e) {
} timer.cancel(); //停了
}
}
想重新开始,应该再次把task加进来。
timer.schedule(Inspection(), 0, 500); 不是很明白你要干什么
保存每个TimerTask的引用,然后在需要停止时调用timerTask.cancel();