Java:Thread.sleep()在内部,而循环不起作用

时间:2011-12-10 10:51:16

标签: java multithreading

好吧,我是线程新手,所以我的问题可能很愚蠢。但我要问的是,我有这个类,让我们说它的名字是MyClass.java。然后在其中一个方法中使用callThread(),我想打印出来,睡眠,并将控制权返回给MyClass.java的方法。我该怎么做?

目前,我的代码是这样的:

class MyClass {
    void method()
    {
        MyThread thread = new MyThread();
        thread.run();
        // do some other stuff here...
    }
}

然后,这将是MyThread:

class MyThread implements Runnable {
    public void run()
    {
        while (true)
        {
            System.out.println("hi");
            this.sleep(1000);
        }
    }
}

我希望MyThread会打印“hi”,将控件传回MyClass,然后在一秒后再打印“hi”。相反,MyThread冻结了我的整个程序,因此在那里使用它根本不起作用......

有什么方法吗?

2 个答案:

答案 0 :(得分:10)

你应该是callig thread.start()

手册中的更多内容:Defining and Starting a Thread

答案 1 :(得分:3)

您必须调用Thread类的start()方法。

MyThread thread = new MyThread();
Thread th=new Thread(thread);
th.start();

sleep()是Thread类的实例方法,MyThread类不是线程(它是可运行的),所以你需要使用Thread.currentThread().sleep()方法。

while (true)
 {
     System.out.println("hi");
     try{
        Thread.currentThread().sleep(1000);
     }catch(Exception ex){ }
  }

阅读this教程以获取有关线程的更多信息。