2014-03-29 180 views
1

大家好抱歉打扰你,我有一个类,我已经实现了runnable,然后我有一个run()方法,在这个方法中我使用thread.sleep间隔运行一个小程序().-这个工作没有任何问题,并定期运行代码。Java线程和.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); 
    } 
    ... 
    } 
+3

为什么'Thread.sleep'会根据它的位置而有所不同?代码是代码。 –

+0

,因为它不在工作! – TotalNewbie

+1

你的代码什么都不做,只能把当前线程休眠。如果在后台线程中调用此方法,则不会执行其他任何操作,否则程序将不会经历任何可衡量的状态更改。没有上下文,你的问题是无法回答的。对我而言,我完全不知道你究竟在问什么。如果当前的答案能回答你的问题,那么很好,他们比我更擅长猜测。如果不是,那么您将希望通过提供所有必要的详细信息来了解您的问题,从而改善您的问题。 –

回答

3

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

作为每Thread.sleepJavaDoc,说:

使当前执行的线程休眠(暂停执行)为指定的毫秒数,受到的精度和系统计时器和调度程序的准确性。该线程不会丢失任何监视器的所有权。

更多在这里阅读有关Pausing Execution with Sleep

现在,这取决于你在哪里调用Thread.sleep()方法线程就会睡眠。

我希望它对你很清楚。

4

Thread.sleep()将使当前线程休眠。如果你在主执行线程中使用这个函数,那么你的主程序将暂停并且不执行任何操作。如果你的主线程调用一个可运行的线程,当它调用Thread.sleep()时该线程将暂停,但你的主线程或其他任何线程仍将运行。

+0

看到当我在另一种方法中使用这个,并称为thread.sleep(5000)例如,执行似乎没有暂停 – TotalNewbie

+2

@TotalNewbie在那请根据示例代码给出正确的解释。 –

+0

请注意Thread.sleep(5000)是五千毫秒或5秒。这应该是显而易见的,但如果你期望5000秒,那将是完全不同的! – DeanDP