gpt4 book ai didi

java - 长时间运行或阻塞的进程导致我的 JFrame 等待并停止其他 Activity

转载 作者:行者123 更新时间:2023-12-02 05:20:42 25 4
gpt4 key购买 nike

在 Java 中递归列出大量文件和目录导致我的 JFrame 等待并停止其他 Activity

如果 java 列出像 C://和 D://root 这样的大文件,在我的计算机中大约需要 15 分钟左右。当 java 执行列表时,它会停止我的 jframe 执行其他 Activity ,因为程序必须等待任务完成。

我使用这种方法来列出文件

File[] files = directory.listFiles();

enter image description here

如何使我们的 jframe 能够在文件列表仍在运行的情况下继续进行其他 Activity

答案详细信息:

http://www.javacreed.com/swing-worker-example/

最佳答案

Swing 是一个单线程框架,这意味着任何长时间运行或阻塞的进程都会阻塞事件调度线程,该线程负责处理事件队列,包括处理重绘事件。

不要这样做...

参见Concurrency in Swing了解更多详情。

您可以使用某种后台Thread,但 Swing 也不是线程安全的,因此如果您打算在处理时更新 UI,则需要确保调用更新在事件调度线程的上下文中。

为了使这更容易,您可以使用 SwingWorker 来实现此目的,请参阅 Worker Threads and SwingWorker .

例如:How to search subfolders and repaint a jTable with new data in Java?

关于java - 长时间运行或阻塞的进程导致我的 JFrame 等待并停止其他 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26540725/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com