为交换工添加超时功能



我将不得不很快在我的应用程序中实现一些功能,这些功能会根据用户指定的长度来超时一个摇摆工作者。

我想知道我是否可以扩展swingworker类,并在里面添加我自己的超时倒计时,例如,我可以覆盖dowork方法,调用startCountdown(),然后调用super.dowork,然后不断检查是否超过了超时?

我想知道是否有比这种方法更好的解决方案?感谢

SwingWorker的javadocs建议:

因为SwingWorker实现了Runnable,所以SwingWorkers可以提交给Executor执行。

对于您想要的超时功能,这将是一个简单的解决方案。

将您的SwingWorker提交给ExecutionService#Submit。在生成的Future<?>上,您可以通过实现例如10秒的延时

Future<?> f = service.submit(mySwingWorker);
try {
    f.get(10, TimeUnit.SECONDS);
} catch (ExecutionException ex) {
    /* SwingWorker threw an Exception */
} catch (TimeoutException ex) {
    /* SwingWorker timed out */
} catch (InterruptedException ex) {
    /* Thread got interrupted */
} catch (CancellationException ex) {
    /* would only be thrown in case you
       call #cancel on your future */
}

使用Swing Timer?

如果它熄灭,时间就超过了。在此之前取消它以停止它。

相关内容

  • 没有找到相关文章

最新更新