gpt4 book ai didi

Java获取指定时间间隔的时间,十分之一秒,百分之一秒

转载 作者:行者123 更新时间:2023-11-30 03:21:42 26 4
gpt4 key购买 nike

您好,我正在尝试找出一种方法,让我的主线程每隔 1/10 或 1/n 秒返回一个值...

public class MainGameLoop {

public static void main(String[] args) {

while (!Display.isCloseRequested()) {
//Run Game Logic
//every 1/10th second update skeletal animation
//ever 1/30th second update texture animation
}
}

我一直在尝试像这样的单独线程

public class HelloRunnable implements Runnable {

public void run() {
try{
Thread.sleep(500)
System.out.println("Hello from a thread!");
catch(Exectpion e) {

}
}

但是 sleep 会影响我的主线程的线程。如果我 hibernate 10 秒,我的主线程也会 hibernate 10 秒。

我已经尝试过

Runnable z = new Runnable() {
public void run() {
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

System.out.println("hi");
}
};


ExecutorService executor = Executors.newCachedThreadPool();
executor.submit(z);
while (!Display.isCloseRequested()) {
//Run Game logic
}
}

这只在初始化时运行一次,并在指定的 sleep 时间后延迟“hi”,或者这个

Runnable z = new Runnable() {
public void run() {
try {
Thread.sleep(100000);
}catch(Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

System.out.println("hi");
}
};


ExecutorService executor = Executors.newCachedThreadPool();

while (!Display.isCloseRequested()) {
//Run Game logic
executor.submit(z);
}
}

以主线程刷新的速度打印出“hi”。

最佳答案

public class TimerDemo extends TimerTask
{
public static void main(String[] args)
{
TimerTask tasknew = new TimerDemo();
Timer timer = new Timer();

timer.scheduleAtFixedRate(tasknew, 0, 1000);
}

@Override
public void run()
{
System.out.println("once every 1000 ms");
}
}

所有任务都在同一线程上运行。在上面的示例中,如果 run() 的执行时间超过 1000 毫秒,则下一个计划执行将被延迟。请参阅javadocs更多细节。如果您想要多个线程,请使用 ScheduledThreadPoolExecutor相反。

关于Java获取指定时间间隔的时间,十分之一秒,百分之一秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31170309/

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