私は単純なクライアントサーバープログラムを持っています。 GUI上で「接続」ボタンをクリックすると、新しいスレッドでサーバーに接続し、サーバーからデータを受け取ってGUIに渡したいのですが、どうすればいいですか?Javaの別のスレッドから1つのスレッドのデータを取得するにはどうすればよいですか?
0
A
答えて
3
は、読み取りスレッドへのあなたのGUIオブジェクトへの参照を渡し、読み出しスレッド呼び出しを持っている:あなたがバックグラウンドスレッドで入手可能な情報を持っているとき、あなただけ呼び出すことができますよりも
BackgroundThread background = new BackgroundThread();
backgroundThread.setCallback(new Foo() {
public void updateGUI(Bar bar) {
//...
}
}
彼がデータを受け取ったときのGUIインスタンスのメソッド。
GUIがSwingのGUIである場合、あなたはSwingUtilities.invokeLater()
への呼び出しをラップする必要があります:
Thread readingThread = new MyReadingThread(gui);
readingThread.start();
と読書スレッドで:SwingWorkerを具体的にするために設計されていることを
String data = readData();
SwingUtilities.invokeLater(new Runnable() {
public void run() {
gui.dataHasBeenReceived(data);
}
});
注意この種のユースケースです。
1
一般的には、コールバックオブジェクトを新しいスレッドに渡すことによって、結果が出るたびにそのコールバックを呼び出します。このコールバックはGUIを更新します。
"コールバック"は、あなたのカスタムインターフェイスを実装するオブジェクトで、結果を引数として取り込むことができます。
getCallback().updateGUI(bar);
関連する問題
- 1. Java Android:1つのスレッドから別のスレッドにデータを送信
- 2. 別のスレッドで1つのスレッドでデータを作成する
- 3. Javaでは、各スレッドが1つのコアで専用に実行されるようにスレッドを作成するにはどうすればよいですか?
- 4. 作成されたスレッドとは別のスレッドから呼び出されるイベントハンドラを取得するにはどうすればよいですか?
- 5. 一意のスレッド識別子を取得するにはどうすればよいですか?
- 6. Javaのスレッドからすべての子スレッドを取得するには?
- 7. 別のスレッドのデータでアクティビティビューを更新するにはどうすればよいですか?
- 8. Javaの別のスレッドからスレッドの変数にアクセスする
- 9. 1つのテーブルビューセルから別のテーブルビューセルにデータを転送するにはどうすればよいですか?
- 10. Java:スレッドを別のスレッドで監視するにはどうしたらいいですか?
- 11. あるスレッドから別のスレッドにコレクションオブジェクトをJavaスレッドで安全に渡す
- 12. Java:スレッドを別のスレッドに渡すスレッド
- 13. Javaでスレッドを使用するにはどうすればよいですか?
- 14. Javaでスレッドをプロファイルするにはどうすればよいですか?
- 15. WPFのスレッドとGUIはどのように別のスレッドからオブジェクトにアクセスするのですか?
- 16. Javaの別のスレッドからすぐにスレッドを強制終了するには?
- 17. Javaスレッドを停止するにはどうすればよいですか?
- 18. 別のスレッドでサービスからオートコンプリートテキストの提案を取得する
- 19. Java Servletの複数のテーブル(PostgreSQL)からデータを取得するにはどうすればよいですか?
- 20. スレッド間の同期はどうすればよいですか?
- 21. 他のスレッドからのデータを安全にコントロールするにはどうすればいいですか?
- 22. JavaアプリケーションのMainメソッドからスレッドを実行するにはどうすればよいですか?
- 23. 競合する2つのスレッドのどちらがロックを取得するかを決定するにはどうすればよいですか?
- 24. スレッドのxmlからデータを取得していますか?
- 25. .NETのメインUIスレッド以外のスレッドでUIを実行するにはどうすればよいですか?
- 26. 関連する2つのテーブルからデータを取得するにはどうすればよいですか?
- 27. JavaのURLからJSONデータを取得するにはどうすればよいですか?
- 28. Windowsスレッドの戻り値を取得するにはどうすればよいですか?
- 29. XMPPチャットスレッドのスレッドIDを取得するにはどうすればよいですか?
- 30. ImageList.Images.Clear()を別のスレッドからどのように呼び出すのですか?
私の簡単なプログラムで完璧に働いた説明とサンプルコードをありがとう。私はSwingWorkerについて聞いたことがありますが、あるスレッドから別のスレッドに短い文字列を送信するだけで、クラス全体を読んで学びたくはありませんでした。 – koleS