Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.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 Swing中耗时的UI更新任务_Java_Multithreading_Swing - Fatal编程技术网

Java Swing中耗时的UI更新任务

Java Swing中耗时的UI更新任务,java,multithreading,swing,Java,Multithreading,Swing,我希望这不是关于如何在Swing中处理后台任务的另一个问题 我使用的是一个第三方非开源库,我没有它的源代码。 该库提供了一个XMLBuilder,它接受一个数据对象和一个模板对象,然后在扩展JComponent的对象内构建一些UI 因为这个构建方法需要更新JComponent,所以它需要在EDT上运行。 问题是,我给它提供了一组相当大的数据来处理,这需要相当长的时间,可能超过20秒。在此期间,我的整个申请都被冻结了 对此我能做些什么?听起来第三方库可能在EDT上做了大量非ui工作 如果是这样的话

我希望这不是关于如何在Swing中处理后台任务的另一个问题

我使用的是一个第三方非开源库,我没有它的源代码。 该库提供了一个XMLBuilder,它接受一个数据对象和一个模板对象,然后在扩展JComponent的对象内构建一些UI

因为这个构建方法需要更新JComponent,所以它需要在EDT上运行。 问题是,我给它提供了一组相当大的数据来处理,这需要相当长的时间,可能超过20秒。在此期间,我的整个申请都被冻结了


对此我能做些什么?

听起来第三方库可能在EDT上做了大量非ui工作


如果是这样的话,除了要求供应商修复它,或者如果他们不想/不能修复它,你就没有什么办法可以做了。清除库并以尊重EDT的方式重新实现它。

你试过使用SwingWorker吗?我就是这么想的,我不认为要求供应商修复它是一种选择,我将不得不做一些自定义优化然后。