为什么我的Timer不能停止呢?

startears2002 2006-01-06 03:32:49
我在另外两个类中分别调用这里的start()和exit()方法,为什么开始之后就不能结束了呢?
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

public class TimerControl {

static Timer timer = new Timer();
static void strat() {
timer.schedule(new RemindTask(), 0, 1000);
}

static void stop(){
timer.cancel();
System.exit(0);
}
static class RemindTask extends TimerTask {
public void run() {
System.out.println(new Date());
}
}

class Stop{
public static void main(String args[]){
TimerControl.stop();
//TimerControl.timer.cancel();
}
}
class Start{
public static void main(String args[]){
TimerControl.start();
}
}
现在直接调用start()方法就可以直接让定时器开始工作,但调用stop()方法却不能让定时器停止。
屏幕还是一直在输出时间。为什么呢?请大家帮帮忙!
...全文
1082 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
startears2002 2006-01-25
  • 打赏
  • 举报
回复
我知道了,在这里我用了两个main,就相当于在两个不同的JVM中运行。所以就不行了。
同理,在界面的时候是一个JVM,所以就可以停止了~
谢谢大家的帮忙!
startears2002 2006-01-10
  • 打赏
  • 举报
回复
谢谢,f_acme(沧海一声笑).
但是为什么我把它做成界面形式,
然后点击开始按钮调用start(),后点击结束按钮调用stop()就可以停止了呢?
谢谢!~
yuzl32 2006-01-07
  • 打赏
  • 举报
回复
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

class TimerControl
{
static Timer timer = new Timer();
static void strat()
{
timer.schedule(new RemindTask(), 0, 1000);
}

static void stop()
{
timer.cancel();
System.exit(0);
}

static class RemindTask extends TimerTask
{
public void run()
{
System.out.println(new Date());
}
}
}
class Stop
{
public static void main(String args[])
{
TimerControl.stop();
//TimerControl.timer.cancel();
}
}

public class Start
{
public static void main(String args[]) throws Exception
{
TimerControl.strat();
Thread.currentThread().sleep(5000);
TimerControl.stop();
}
}


F:\>javac Start.java

F:\>java Start
Sat Jan 07 00:08:33 CST 2006
Sat Jan 07 00:08:34 CST 2006
Sat Jan 07 00:08:35 CST 2006
Sat Jan 07 00:08:36 CST 2006
Sat Jan 07 00:08:37 CST 2006

F:\>
startears2002 2006-01-07
  • 打赏
  • 举报
回复
谢谢楼上的修改,不过你们可能没有明白的我意思,我是想运行Start,计时器就开始工作,运行Stop,计时器就停止工作,我不知道到底想让它工作多久。
Start和Stop分别是两个应用程序,不好意思,没有说明白,请再帮我想想办法,谢谢!~
f_acme 2006-01-07
  • 打赏
  • 举报
回复
看看cancle方法的说明:
cancel
public boolean cancel()取消此计时器任务。如果任务安排为一次执行且还未运行,或者尚未安排,则永远不会运行。如果任务安排为重复执行,则永远不会再运行。(如果发生此调用时任务正在运行,则任务将运行完,但永远不会再运行。)
注意,从重复的计时器任务的 run 方法中调用此方法绝对保证计时器任务永远不会再运行。

此方法可以反复调用;第二次和以后的调用无效。


返回:
如果此任务安排为一次执行且尚未运行,或者此任务安排为重复执行,则返回 true。如果此任务安排为一次执行且已经运行,或者此任务尚未安排,或者此任务已经取消,则返回 false。(一般来说,如果此方法阻止发生一个或多个安排执行,则返回 true。)
f_acme 2006-01-06
  • 打赏
  • 举报
回复
这一共几个程序啊?没看明白

62,629

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧