Bis*_*128 3 java swing multithreading timeout swingworker
我将不得不很快为我的应用程序实现一些功能,根据用户指定的长度超时.
我想知道我是否可以扩展swingworker类并在里面添加我自己的倒计时,例如我可以覆盖dowork方法,调用startCountdown()然后调用super.dowork然后继续检查超时是否超过?
我想知道这种方法是否有更好的解决方案?谢谢
SwingWorker的javadocs建议:
由于SwingWorker实现了Runnable,因此可以将SwingWorker提交给Executor进行执行.
这将是您所需的超时功能的简单解决方案.
将您的SwingWorker提交给ExecutorService#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 */
}
Run Code Online (Sandbox Code Playgroud)