Java:Thread.sleep()在循环不工作时在内部

Java:Thread.sleep()在循环不工作时在内部,java,multithreading,Java,Multithreading,好吧,我是线程新手,所以我的问题可能相当愚蠢。但是我想问的是,我有一个类,比如说它的名字是MyClass.java。然后在它的一个方法中是callThread(),我想把它打印出来,休眠,并将控制权返回给MyClass.java的方法。我该怎么做 目前,我的代码是这样的: class MyClass { void method() { MyThread thread = new MyThread(); thread.run(); /

好吧,我是线程新手,所以我的问题可能相当愚蠢。但是我想问的是,我有一个类,比如说它的名字是MyClass.java。然后在它的一个方法中是callThread(),我想把它打印出来,休眠,并将控制权返回给MyClass.java的方法。我该怎么做

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

class MyClass {
    void method()
    {
        MyThread thread = new MyThread();
        thread.run();
        // do some other stuff here...
    }
}
然后,这将是一个神话:

class MyThread implements Runnable {
    public void run()
    {
        while (true)
        {
            System.out.println("hi");
            this.sleep(1000);
        }
    }
}
我希望MyThread能够打印“hi”,将控件传递回MyClass,然后在一秒钟后再次打印“hi”。相反,MyThread冻结了我的整个程序,所以把它放在里面根本不起作用


有什么办法可以解决这个问题吗?

您应该调用thread.start()


手册中有更多说明:

必须调用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){ }
  }

有关线程的更多信息,请阅读教程。

thread.run()是一个普通的方法调用,您需要替换它,正如TomasThanks所回答的!!现在可以用了!;)从不知道start()和run()是完全不同的方法eah,thread.run只会让它调用该方法,然而thread.start()实际上会告诉Java虚拟机运行run()方法,这样你的主类就不必等待无限循环完成(它永远不会这样做)