2011-06-27 67 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