让两个计时器工作并在应该结束时结束?

时间:2013-12-24 05:51:04

标签: 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);  
        }
    }
}

1 个答案:

答案 0 :(得分:1)

我认为您需要实现Runnable界面并像Thread一样使用它:

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

    }
}