为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

子衿沉夜 2023-11-10 15:26:54
我正在做一个学习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我想要的结果是打印这个:“text”。。。“文本2”如果我删除wait(这会导致错误),则会打印: "text1" "text2" 。。。在此先感谢您的任何信息。
查看完整描述

1 回答

?
慕哥9229398

TA贡献1877条经验 获得超6个赞

你可以这样做:


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");

    }

}


查看完整回答
反对 回复 2023-11-10
  • 1 回答
  • 0 关注
  • 106 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信