gpt4 book ai didi

java - 如何创建一个对象来启动一个与我的程序一起运行的线程?

转载 作者:行者123 更新时间:2023-12-01 11:31:19 25 4
gpt4 key购买 nike

我一直在尝试弄清楚如何创建一个 Timer 类,当您创建该类的新对象时,该类将以毫秒为单位进行计数。

public class Timer implements Runnable {
private long ms;

public Timer() {
this.ms = 0;
new Thread(this).run();
}

public Timer(long ms) {
this.ms = ms;
new Thread(this).run();
}

@Override
public void run() {
while (!Thread.currentThread().isInterrupted()) {
ms++;
Time.sleep(1);
}
}

public long getElapsed() {
return ms;
}
}

这是我的 Timer 类,但是,当我尝试创建它的对象时:

Timer t = new Timer();

它卡在计时器内的线程上。我根本不明白我应该如何让一个线程与我的主程序一起连续运行。

还应该注意的是,我使用这个作为示例,因为很可能有更好的方法来创建计时器。

感谢您的宝贵时间。

最佳答案

我不确定您是否真的想要在这里尝试做的事情,因为这会白白浪费大量 CPU 时间。

你为什么不尝试这样的事情:

public class MyObject {
private long birthTime;

public MyObject() {
this.birthTime = System.nanoTime();
}

public long getElapsedMilliseconds() {
return (System.nanoTime() - this.birthTime) / (1000 * 1000);
}
}

可以这样使用:

public static void main(String[] args) {

MyObject obj = new MyObject();

try {
Thread.sleep(1337);
} catch (InterruptedException e) {
e.printStackTrace();
}

System.out.println("obj is " + obj.getElapsedMilliseconds() + "ms old");
}

并将返回:

obj is 1337ms old

您只需要存储从创建MyObject那一刻起的当前时间(以毫秒为单位),然后您可以通过再次减去当前时间(以毫秒为单位)来推断出对象当前/已经生存的实际时间。

关于java - 如何创建一个对象来启动一个与我的程序一起运行的线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30360926/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com