Java-программа не отвечает, когда выполняется шифрование больших файлов - PullRequest
0 голосов
/ 08 января 2019

Я работаю над Java-программой Encryption / Decryption с режимом AES CBC, и я использовал cipher.update() с cipher.doFinal(), чтобы работать с большими файлами и избегать outOfMemoryException.

Теперь, при шифровании / дешифровании больших файлов (например, 2 ГБ), в фоновом режиме все работает отлично (я вижу это в прогоне Intellij), но графический интерфейс моей программы не реагирует, когда эта обработка выполняется и до шифрования / дешифрования готово.

Более того, нет ошибок при запуске, так в чем может быть проблема?

Ответы [ 2 ]

0 голосов
/ 08 января 2019

Похоже, вы используете поток пользовательского интерфейса для вычислений. Используйте фоновый поток.

Если ваш пользовательский интерфейс колеблется, можно использовать SwingWorker.

0 голосов
/ 08 января 2019

Скорее всего, вы выполняете шифрование в потоке пользовательского интерфейса, который блокирует пользовательский интерфейс от ответа до завершения шифрования. Вместо этого вы должны создать новый поток и запустить шифрование в нем, чтобы ваш пользовательский интерфейс оставался отзывчивым.

Также обязательно добавьте хотя бы минимальное количество кода в вопрос, чтобы люди могли помочь вам лучше.

...