2011-06-27 35 views
1

我已經創建了一個查詢MySQL數據庫以查找項目列表的應用程序。結果數據集被解析爲單個對象,並在ArrayLists的整個程序中傳遞。Java線程組織指導

當前,在初始數據庫連接和任何後續查詢期間,我的程序的GUI將掛起。爲了解決這個問題,我想過渡我的DatabaseManager類在單獨的線程中運行。

我很好奇我應該如何處理在GUI和DatabaseManager線程之間傳遞數據。

實際上,我更好奇我將如何創建一個類來處理已經實現的所有數據庫功能,但在一個單獨的線程中運行它。

當前方法的定義包括但不限於:

  • initConnection()
  • 查詢(字符串的SQLQuery)
  • printResultSet()

在理想情況下,這些功能將是從GUI調用並且會很快返回。我怎麼去設置這個呢?

回答

1

當我處於相同的情況時,我使用Akka typed actor作爲DatabaseManager(它是下面的線程)。我從我的表模型發送異步請求到我的「數據庫actor」,然後用來自Actor的SwingUtilities.invokeLater()更新GUI/AbstractTableModel。它運行良好,但您也可以手動執行線程。

+0

這是非常有用的,但我想我問了錯誤的問題。見上面的編輯。 – Peaches491