有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在java冻结中调试打印中间步骤

我正在编写一个java应用程序,通过DES算法对输入进行加密和解密。首先,我不使用GUI,而是使用System.out.print();在输出窗口中打印中间步骤。当输入较大时,计算可能需要一段时间,但当使用“输出”窗口时,中间步骤会在计算时逐个打印。那太完美了

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

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

问题是:中间步骤不再逐个打印。如果输入很大,程序就会冻结,什么也不做,直到计算全部完成,然后一次打印所有中间步骤

另一个问题:当我不使用GUI时,程序从未崩溃,现在如果输入足够大,程序就会崩溃:它会冻结,永远不会恢复生命

需要帮忙吗


共 (2) 个答案

  1. # 2 楼答案

    用户界面处于冻结状态,因为您正在事件分派线程上执行长时间运行的计算,该线程负责处理事件并重新绘制UI。为了避免这个问题,考虑在后台线程上执行加密/解密,可能使用^{}。p>

    关于第二点,关于用户界面永远不会恢复使用,这可能表明另一个资源问题(例如内存)。您可能希望运行探查器或JConsole来查看出现此问题时每个线程的状态