![](/img/trans.png)
[英]Creating a visualization for a multi-threaded application in Java Swing
[英]Java Swing multi-threaded access to JTextArea
我有一個多線程Java Swing應用程序。
幾個線程將通過textArea.append("something")
寫入JTextArea
來調用該方法。 我應該像這樣包裝它:
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
textArea.append("something");
}
});
或者它只是一個內容更新,Swing會自己做正確的線程嗎?
通常,您對Swing所做的任何更新,特別是任何更改控件的狀態或布局的更新都應該從Swing線程完成。
在這種情況下,你是絕對正確的,將每個更新包裝到invokeLater
是正確的方法。 您可以嘗試更新自己的隊列或類似的但是當Swing已經提供了您需要的功能時,使用它是有意義的。
請參閱JTextArea
文檔: http : //docs.oracle.com/javase/7/docs/api/javax/swing/JTextArea.html
在哪里說
警告:Swing不是線程安全的。 有關更多信息,請參閱Swing的線程策略。
在哪里說:
一般來說,Swing不是線程安全的。 除非另有說明,否則必須在事件派發線程上訪問所有Swing組件和相關類。
JTextArea#append
方法中沒有任何文檔說明從其他線程使用是安全的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.