Java线程和.sleep()混淆

时间:2014-03-29 20:01:07

标签: java multithreading sleep thread-sleep

大家好抱歉打扰你,我有一个类,我已经实现了runnable,然后我有一个run()方法,我使用thread.sleep()每隔一段时间运行一个小程序.-这没有任何作用发布并定期运行代码。

但是我对如何在我班级中的其他方法中使用thread.sleep()感到困惑,有人能指引我朝正确的方向发展吗?

如果事先简单,请道歉。

代码示例:

// Search product: returns list of matching titles
  public String[] find_titles(String title) throws RemoteException{
    try {
          Thread.sleep(5000);                                           //pause execution for 2s 
        } catch(InterruptedException e) {
          //error running the thread!
          System.exit(1);
    }
    ...
   }

2 个答案:

答案 0 :(得分:4)

Thread.sleep()将导致当前线程进入休眠状态。如果在主执行线程中使用它,那么主程序将暂停,不执行任何其他操作。如果你的主线程调用一个runnable线程将在它调用Thread.sleep()时暂停,但你的主线程或任何其他线程仍然会运行。

答案 1 :(得分:3)

Thread.sleep()Thread类中的静态方法。这意味着它只睡眠当前正在运行的线程。

根据Thread.sleepJavaDoc说:

  

使当前正在执行的线程休眠(暂时停止执行)指定的毫秒数,具体取决于系统定时器和调度程序的精度和准确性。该线程不会失去任何监视器的所有权。

在此处详细了解Pausing Execution with Sleep

现在它取决于你在哪里调用线程将睡眠的Thread.sleep()方法。

我希望你明白。