如何使用定时器多线程

时间:2017-10-15 16:28:46

标签: java multithreading time timertask

我现在正在学习Java中的类和继承。我做了一个简单的RPG游戏。 现在我尝试使用多线程,但它不起作用。 我希望输出每30秒出现一次。 “自比赛开始以来已经过了30秒。”像这样.. 数字会随着时间的推移而增长。 我该怎么办? 实际上,我不会说英语,这可能很尴尬.. 我等你的回答。谢谢!

//import java.util.Timer;
import java.util.TimerTask;

public class Timer extends Thread {

   int count = 0;

   Timer m_timer = new Timer();
   TimerTask m_task = new TimerTask() {

        public void run() {
            count++;
            System.out.println("It's been 30 seconds since the game started.");
        }

    };

   m_timer.schedule(m_task, 1000, 1000);
};

主:

public class Main {

    public static void main(String[] args) {
        Timer m_timer = new Timer();
        m_timer.start();
    }

}

1 个答案:

答案 0 :(得分:0)

如果您对了解并发感兴趣,可以先阅读Java Tutorial。我意识到你说英语不是你的母语,但也许你可以按照这些教程中提供的代码。

您似乎只是想尝试实现一个简单的示例,因此我将提供以下代码:

import java.util.Timer;
import java.util.TimerTask;

public class TimerMain {

    public static void main(String[] args) {
        Timer timer = new Timer();
        TimerTask task = new TimerTask(){
            private int count = 0;

            @Override
            public void run() {
                count++;
                System.out.println("Program has been running for " + count + " seconds.");
            }
        };
        timer.schedule(task, 1000, 1000);

        //Make the main thread wait a while so we see some output.
        try {
            Thread.sleep(5500);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        //Stop the timer.
        timer.cancel();
    }

}

正如其他人指出的那样,如果你需要高度的准确性,你应该采用不同的方法。我找到了关于时间准确性的this question