簡體   English   中英

用Java凍結打印中間步驟

[英]Printing intermediate steps in java freezes

我正在編寫一個Java應用程序,該應用程序通過DES算法對輸入進行加密和解密。 首先,我沒有使用GUI,並使用System.out.print();在輸出窗口中打印了中間步驟System.out.print(); 當輸入很大時,計算可能要花一些時間,但是當使用輸出窗口時,在計算時會一步步打印中間步驟。 那太完美了。

現在,我使用一個名為txtDebug的JTextArea為我的程序制作了一個GUI,以打印中間步驟:

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

問題是:不再一步一步地打印中間步驟。 如果輸入很大,則程序將凍結並且不執行任何操作,直到所有計算都完成,然后立即打印所有中間步驟。

另一個問題:當我不使用GUI時,程序永遠不會崩潰,現在如果輸入足夠大,程序就會崩潰:它死機,永不恢復生命。

有什么幫助嗎?

您必須在后台工作線程中完成工作。 在主線程中執行此操作將阻止Swing處理事件-> UI將會阻塞。

用戶界面凍結,因為您正在對事件處理線程(負責處理事件和重新繪制UI的線程)執行長時間的計算。 為了避免此問題,請考慮在后台線程上執行加密/解密,也許使用SwingWorker

關於用戶界面永不復活的第二點,這可能表明存在另一個資源問題(例如內存)。 發生此問題時,您可能想運行探查器或JConsole以查看每個線程的狀態。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM