如何在时间到来之前唤醒线程

时间:2013-09-24 03:15:23

标签: java

我正在研究一个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()”吗?还是有另一种方法可以暂停App并恢复它?

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

使用CountDownLatch

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

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

您可以点击

上的简历按钮调用countDownLatch.countDown()方法

答案 2 :(得分:0)

您可以使用中断取消睡眠,以下是更多信息: http://docs.oracle.com/javase/tutorial/essential/concurrency/interrupt.html