Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 向swingworker添加超时函数_Java_Multithreading_Swing_Timeout_Swingworker - Fatal编程技术网

Java 向swingworker添加超时函数

Java 向swingworker添加超时函数,java,multithreading,swing,timeout,swingworker,Java,Multithreading,Swing,Timeout,Swingworker,我很快就要在我的应用程序中实现一些功能,根据用户指定的长度来超时swing worker 我想知道是否可以扩展swingworker类并在其中添加我自己的超时倒计时,例如,我可以重写dowork方法,调用startCountdown(),然后调用super.dowork,然后继续检查是否超过了超时 我想知道是否有一个更好的解决方案,这种方法?谢谢用一个吗 如果它熄灭,则超过时间。在此之前取消它以停止它 SwingWorker的javadocs建议: 因为SwingWorker实现Runnable

我很快就要在我的应用程序中实现一些功能,根据用户指定的长度来超时swing worker

我想知道是否可以扩展swingworker类并在其中添加我自己的超时倒计时,例如,我可以重写dowork方法,调用startCountdown(),然后调用super.dowork,然后继续检查是否超过了超时

我想知道是否有一个更好的解决方案,这种方法?谢谢

用一个吗


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

SwingWorker的javadocs建议:

因为SwingWorker实现Runnable,所以SwingWorker可以提交给执行者执行

这将是您想要的超时功能的简单解决方案

将您的SwingWorker提交给。在产生的
未来
上,您可以通过

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 */
}
Future f=service.submit(mySwingWorker);
试一试{
f、 get(10,时间单位秒);
}捕获(ExecutionException ex){
/*SwingWorker引发了一个异常*/
}捕获(TimeoutException例外){
/*SwingWorker超时*/
}捕获(中断异常例外){
/*线程被中断*/
}捕获(取消异常){
/*只有在你
打电话#取消你的未来*/
}

为了防止有人发现这一点,我使用了以下解决方案来解决这个问题,其中的Duplicate有一个更好的答案