繁体   English   中英

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

[英]How to wake up a thread before time is up

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

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

使用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()方法

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM