java - 让两个计时器工作并在应该的时候结束?

标签 java multithreading

我想创建一个计时器,我可以创建一个运行实例。我在这段代码的末尾创建了这个。我想要做的是能够启动每个计时器并让它们同时运行,但当一个计时器完成时,另一个计时器应该继续。

此代码有效,但计时器都继续运行。我该如何更改它,以便当一个计时器结束时它不会重置,然后第二个计时器结束时一切都会停止。

也许我应该使用线程?不确定这个吗?也许每个计时器都可以链接到一个线程。

代码(程序):

import java.awt.Toolkit;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
import java.util.Timer;
import java.util.TimerTask;

import javax.swing.JOptionPane;

public class DDHTypeCasting {
    public static void main(String[] args) {
        AnnoyingBeep y1 = new AnnoyingBeep(5,"Timer 1");
        AnnoyingBeep y2 = new AnnoyingBeep(10,"Timer 2");
            System.out.format("Task scheduled.%n");
    }
}

class AnnoyingBeep {
    Timer timer;

    public AnnoyingBeep() { }

    public AnnoyingBeep(int a, String s) {
        timer = new Timer();
        timer.schedule(new RemindTask(a,s),a,1*1000); //delay
    }
}

    class RemindTask extends TimerTask {
    Toolkit toolkit;
    int numWarningBeeps = 0;
    String myString = null;

    RemindTask(int a, String s) {
        numWarningBeeps = a;
        myString = s;
    }

    public void run() {
        if (numWarningBeeps > 0) {
            System.out.format("Beep!%n " + myString);
            numWarningBeeps--;
        } else {
            System.out.format("Time's up!%n " + myString);
           // System.exit(0);  
        }
    }
}

最佳答案

我认为你需要实现Runnable接口(interface)并像Thread一样使用它:

public class ThreadTimer extends Timer implements Runnable {
    public void run() {

    }
} 

关于java - 让两个计时器工作并在应该的时候结束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20755557/

相关文章:

java - 为什么从静态初始化程序启动线程并等待其完成会导致死锁?

java - Web应用程序中的时间戳更改问题

java - 是否可以在 Android 中使用 YouTube API 来显示 360° 视频?

java - Spring 3.1.x 版本中是否可以定义更多的 KeyGenerator 类用于缓存?

python - 线程或多处理

multithreading - SetEvent ResetEvent WaitForMultipleObjectsEx-竞赛条件?

c++ - 设计线程类

java - Java 代码中的 UTF-8 问题

java - 如何确定 CPU 绑定(bind)任务在运行时的最佳线程数?

java - 如何从线程取回数组值