Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.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程序不';运行加密大文件时的t响应_Java_User Interface_Encryption_Out Of Memory - Fatal编程技术网

Java程序不';运行加密大文件时的t响应

Java程序不';运行加密大文件时的t响应,java,user-interface,encryption,out-of-memory,Java,User Interface,Encryption,Out Of Memory,我正在使用AES CBC模式开发一个加密/解密java程序,我使用了cipher.update()和cipher.doFinal()来处理大文件并避免outOfMemoryException 现在,当加密/解密大文件(如2GB)时,在后台一切都正常工作(我可以在Intellij运行中看到),但我的程序的GUI在该处理运行时以及加密/解密完成之前不会响应 此外,运行中没有错误,那么会出现什么问题 您很可能正在UI线程上运行加密,这将锁定UI,直到加密完成。相反,您应该生成一个新线程并在其中运行加密

我正在使用AES CBC模式开发一个加密/解密java程序,我使用了
cipher.update()
cipher.doFinal()
来处理大文件并避免
outOfMemoryException

现在,当加密/解密大文件(如2GB)时,在后台一切都正常工作(我可以在Intellij运行中看到),但我的程序的GUI在该处理运行时以及加密/解密完成之前不会响应


此外,运行中没有错误,那么会出现什么问题

您很可能正在UI线程上运行加密,这将锁定UI,直到加密完成。相反,您应该生成一个新线程并在其中运行加密,以便您的UI保持响应


另外,请确保至少在问题中添加少量代码,以便人们可以在这里更好地帮助您。

听起来您正在使用UI线程进行计算。使用背景线程


如果您的UI是swing,则可以使用SwingWorker。

它是什么类型的GUI?你在UI线程上运行CPU密集型代码吗?我不确定我是否明白这个问题,但加密大型文件的唯一方法是使用update()而不会出现内存异常,而且我的Jar UI很简单,在此过程中,我不会对其进行任何更新,但仅在更新完成后才进行更新。您不能仅使用一个线程来完成工作和更新UI。您至少需要使用两个线程。GUI框架:swing:JFrame、OpenFX:.fxml或javaFX-launch、旧的awt:Frame/Window、none:just java
main
method。由于每个GUI都有自己的事件处理,一些信息是有用的。我同意Calvin的观点,但我不确定哪一部分可能是问题所在。你有什么好的方法来实现不止一个UI线程吗?首先,你能详细说明你的问题吗?具体说明你使用的是哪个UI框架,以及你是如何进行加密的?