gpt4 book ai didi

java - 如何从 main 方法定期执行可运行类?

转载 作者:行者123 更新时间:2023-12-02 02:21:56 25 4
gpt4 key购买 nike

我有一个类Clock,其代码如下。我想每隔 x 秒执行一次 Clock 中的 run 方法。但我希望这是从 Main 方法启动的,而不是从 Clock 类本身启动。

简单来说,Clock 将用于模拟 CPU 中的时钟单元。每 x 秒,Clock 类的状态将在 10 之间变化,从而导致程序其余部分的状态发生变化。程序的 Main 方法将创建一个 Clock 对象,该对象将在后台定期执行,直到程序终止。

我读过有关 ScheduledExecutorService 的内容,我认为这很理想,但是它只能用于执行单个可运行对象,而不是整个可运行类。

是否有办法每隔 x 秒从位于单独类中的 Main 方法执行我的 Clock 类?

时钟类

public class Clock implements Runnable{

private int state = 0; //the state of the simulation, instrutions will execute on the rising edge;
private float executionSpeed; //in Hz (executions per second)

private String threadName = "Clock";

public Clock(float exeSpeed)
{
executionSpeed = exeSpeed;
System.out.println("[Clock] Execution speed set to " + executionSpeed + "Hz. (" + (1/executionSpeed) + " instructions per second.)");
}

public void run()
{
System.out.println(threadName + " executed.");
toggleState();
}

public void toggleState()
{
if(state == 1)
{
state = 0;
}
else if(state == 0)
{
state = 1;
}
}

public float getExecutionSpeed()
{
return executionSpeed;
}

}

我想从这里定期执行时钟:

public class Main {

public static void main(String[] args)
{
float period = 1.0;
Clock clockUnit = new Clock(period);

//execute clock.run() every 1.0 seconds
}
}

最佳答案

你看过java.util.Timer吗?这将允许您定期执行 TimerTask。

您需要更改您的 Clock 类来扩展 TimerTask。

float period = 1.0f;
Clock clockUnit = new Clock(period);
Timer timer = new Timer();
timer.scheduleAtFixedRate(clockUnit, 0, 1000);

关于java - 如何从 main 方法定期执行可运行类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48391813/

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