java - java 中打印中间步骤卡住

标签 java debugging swing freeze concurrency

我正在编写一个java应用程序,通过DES算法对输入进行加密和解密。首先,我在没有 GUI 的情况下完成了它,并使用 System.out.print(); 在输出窗口中打印了中间步骤。当输入很大时,计算可能需要一段时间,但是当使用输出窗口时,中间步骤会在计算时一一打印出来。太完美了。

现在我为我的程序制作了一个 GUI,使用名为 txtDebug 的 JTextArea 来打印中间步骤:

public static void debug(String tekst){
txtDebug.setText(txtDebug.getText()+tekst+"\n");}

问题:中间步骤不再一一打印。如果输入很大,程序就会卡住,什么也不做,直到计算全部完成,然后一次性打印出中间步骤。

另一个问题:当我不使用 GUI 时,程序永远不会崩溃,现在如果输入足够大,程序就会崩溃:它会卡住并且永远不会恢复正常。

请问有什么帮助吗?

最佳答案

您必须在后台工作线程中完成这项工作。在主线程中执行此操作将阻止 Swing 处理事件 -> UI 将阻塞。

关于java - java 中打印中间步骤卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7984321/

相关文章:

debugging - 如何只用3条线画一条老虎?

Java 动画

java - 数据库更新时使用 AbstractTableModel 更新 JTable

java - 尝试使用生产者和消费者模式打印斐波那契数列

java - Selenium .open ("/");生成了 XHR 500 : Internal Server Error

java - 使用java插入列表<text> cassandra

java - 如何设置 JButton ArrayList 的属性?

java - 尝试在java中使用递归查找字符串的反向时出现StackOverflowError

powershell - 如何在VBScript中从PowerShell取回错误消息

php - 在 PhpStorm 中排除其他脚本调试