2013-09-24 55 views
1

我正在开发一个Java应用程序,并且我达到了要暂停执行几秒钟(由用户选择)并继续执行后续操作的点..并且这里是一个简单的代码:如何在时间到来之前唤醒线程

Public Class myApp 
{ 
    static public main() 
    { 
     int seconds=10; 
     // do couple of things 
     try { 
        Thread.sleep(10*1000); 
       } catch (InterruptedException ex) { 

        Logger.getLogger(myApp.class.getName()).log(Level.SEVERE, null,  ex); 
       } 
    } 

我现在想给用户通过点击一个按钮来恢复执行甚至在时间是一个机会。 这是可能的使用“Thread.sleep()”?或者有另一种方法来暂停应用程序并恢复它?

+0

的Java调用countDownLatch.countDown()方法你使用的是哪个版本? – shazin

+0

您需要中断该线程,但您可能还想通过调用['Thread#interrupted']来重置中断标志(http://docs.oracle.com/javase/7/docs/api/java/lang /Thread.html#interrupted()) – MadProgrammer

+0

@shazin我正在使用Java 6 – user2746896

回答

1

使用CountDownLatch

Public Class myApp 
{ 
    static CountDownLatch countDownLatch = new CountDownLatch(1); 

    static public main() 
    {   
     try { 
      countDownLatch.await(10000, TimeUnit.MILLISECONDS); 
     } catch (InterruptedException ex) { 
      // Logging 
     } 
    } 
} 

,你可以从简历按钮上点击

+0

它工作顺利... +1这个...谢谢你:) – user2746896

+0

你可以做到这一点睡眠,以及等待/通知和许多其他选项。 –

1

您可以使用wait代替sleep来暂停执行线程。然后您可以使用notifynotifyAll唤醒等待的线程。

+0

我该如何使用Main()等待? – user2746896

+0

+1不错的主意;) – MadProgrammer

+0

@MadProgrammer你能告诉我怎么用“main()”来做?我的意思是如何让它等待几秒钟...即时通讯仍然是新的这些概念..谢谢 – user2746896