我正在做一个学习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
我想要的结果是打印此: “文本”。 。 。 “ text2”
如果我删除了wait
(这会导致错误),则会显示:
“ text1”“ text2”。 。
提前感谢您提供任何信息。
答案 0 :(得分:0)
您可以执行以下操作:
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");
}
}