2011-06-27 11 views
1

MySQLデータベースにアイテムのリストを照会するアプリケーションを作成しました。結果のデータセットは個々のオブジェクトに解析され、ArrayListsでプログラム全体に渡されます。Javaスレッドの組織案内

現在のところ、最初のデータベース接続時およびその後のクエリでは、自分のプログラムのGUIがハングします。これに対処するために、DatabaseManagerクラスを別のスレッドで実行するように移行したいと思います。

GUIとDatabaseManagerスレッドの間でデータをやりとりすることにどのように対処すればよいか不思議です。

実際には、すでに実装されているすべてのデータベース機能を処理するための単一のクラスを作成する方法はもっと興味がありますが、別のスレッドですべて実行する方法がより興味があります。

現在のメソッドの定義には、それだけ

  • initConnection(これらに限定されない)
  • クエリ(文字列のSQLQuery)
  • printResultSet()

理想的には、これらの関数は次のようになりGUIから呼び出され、非常に迅速に戻ります。これを設定するにはどうすればいいですか?

答えて

1

私が同じ状況にあったとき、DatabaseManagerにはAkka typed actorを使用しました(これは下のスレッドです)。テーブルモデルから非同期リクエストを自分の「データベースアクター」に送信し、アクターからGUI/AbstractTableModelをSwingUtilities.invokeLater()に更新しました。うまくいきましたが、手動でスレッドで行うこともできます。

+0

これは非常に役に立ちますが、私は間違った質問をしました。上記の編集を参照してください。 – Peaches491