java 计时器停止_在Java中停止计时器事件

本文探讨了在Java中如何启动和停止计时器事件。代码示例展示了如何创建一个根据布尔值启动和停止的计时器,但遇到了问题:计时器在接收到停止信号时未能正确停止。解决方案提供了修正后的`MyClass.java`和`Example.java`代码,确保计时器可以按预期启动并在接收到`false`布尔值时取消。
摘要由CSDN通过智能技术生成

我想在一个类中使用一个函数,它将启动和停止使用布尔值链接到int值的定时器。因此,例如,如果我启动了一个int为0的计时器,那么这将是timer0,如果它是3,那么timer3等等。

我遇到的问题是计时器似乎开始确定,但是当我向他们发送一个假布尔来阻止他们时,他们将继续运行,所以我需要知道如何正确地阻止他们。

在Class.java中,代码是:

public void Event(final int value, boolean run, int time){

if(run){

System.out.println(run);

Timer timer = new Timer();

timer.schedule( new TimerTask() {

public void run() {

// The needed code will go here

System.out.println(value + " Event run");

}

}, 0, time); // Every second

} else {

}

}然后对于我的Main.java代码是:

System.out.println("Start Timer 0 Event");

r.Event(0, true, 1000);

System.out.println("Start Timer 1 Event");

r.Event(1, true, 250);

System.out.println("Start Timer 2 Event");

r.Event(2, true, 250);

r.Event(0, false, 1000); // Not Working as i need

System.out.println("Stop Timer 0 Event");基本上我只想让事件在每一定时间重复,直到我阻止它们,并且可能有许多事件在一起运行。如果定时器不是这样做的最好方法,那么替代方案会很好,但它需要按照描述的相同方式工作。

这里要求的是我的定时器的可运行代码。

MyClass.java:

package com.z;

import java.awt.*;

import java.util.*;

import java.util.TimerTask;

public class MyClass {

//Name: Event (BROKEN)

public void Event(final int value, boolean run, int time){

Timer timer = new Timer("" + value, true);

if(run){

System.out.println(run);

timer.schedule( new TimerTask() {

public void run() {

// Code here

System.out.println(value + " Event run");

}

}, 0, time); // Every second

}

if (!run) {

timer.cancel();

}

}

}Example.java:

package com.z;

import java.awt.*;

import java.awt.event.*;

public class Example {

public static void main(String[] args) {

MyClass r = new MyClass();

// Event (BROKEN)

System.out.println("Start Timer 0 Event");

r.Event(0, true, 1000);

System.out.println("Start Timer 1 Event");

r.Event(1, true, 250);

r.Event(0, false, 1000);

System.out.println("Stop Timer 0 Event");

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值