gpt4 book ai didi

java - 如何让程序等到计时器线程完成后再继续?

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

我正在做一个学习java的小程序,我想打印一些东西,等待几秒钟(通过打印显示......)然后继续该程序。我通过使用 Timer 和 TimerTask 来完成此操作。我想知道如何让程序的执行等到我的计时器线程结束。

我尝试在某些地方添加 timer.wait() 但它不起作用。

public class Main
{
public static void main(String[] args)
{
System.out.println("text1");
clock currentClock = new clock();
currentClock.run();
// i want the program to stop until this is over, adding currentClock.wait(); doesnt work
System.out.println("text2");
}
}

class clockHelper extends TimerTask
{ // printing class, called by clock class

int actual = 0;

public void run()
{
if (actual < 3)
{
System.out.println(".");
actual++;
} else
{
cancel();
}
}
}

class clock
{ // called by main class
public static void run()
{

Timer watch = new Timer();
TimerTask timer2 = new clockHelper();
watch.schedule(timer2, 1000, 500);
// adding watch.wait(); doesn't work, i can also stop it here and it should work fine
}
}

这是我得到的错误:java.lang.IllegalMonitorStateException

我想要的结果是打印:“文本” 。 。 。 “文本2”

如果我删除 wait (这会导致错误),则会打印:“文本1”“文本2”。 。 .

预先感谢您提供任何信息。

最佳答案

你可以这样做:

public class Main
{
public static void main(String[] args) throws InterruptedException
{
System.out.println("text1");
for (int i = 0; i < 3; i++) {
System.out.print(".");
Thread.sleep(1000);
}
System.out.println();
System.out.println("text2");
}
}

关于java - 如何让程序等到计时器线程完成后再继续?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58459577/

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