从MySQL多线程Java获取响应
比方说,我有一个大的、耗时的处理任务,通常需要查询MySQL数据库。我希望主线程在等待SQL server响应时保持处理,因此我在另一个线程中进行查询
如果查询在另一个线程中,我将如何从查询中获取响应数据?我可能会将结果保存在数组或队列中,但我不确定在单独的线程(使用连接池)中处理MySQL查询的最佳实践是什么
谢谢
你可以在下面搜索框中键入要查询的问题!
比方说,我有一个大的、耗时的处理任务,通常需要查询MySQL数据库。我希望主线程在等待SQL server响应时保持处理,因此我在另一个线程中进行查询
如果查询在另一个线程中,我将如何从查询中获取响应数据?我可能会将结果保存在数组或队列中,但我不确定在单独的线程(使用连接池)中处理MySQL查询的最佳实践是什么
谢谢
# 1 楼答案
一种方法是让创建线程的类将“this”传递给运行线程的类的构造函数,当线程完成获取结果时,它可以调用第一个类上的公共方法将结果传递回。如果这还不够合理,我可以提供代码片段
# 2 楼答案
您可以使用另一个线程(或runnable)来获取查询结果,但要确保查询任务是自包含的:它打开一个连接(或从连接池中获取一个连接),启动查询,获取结果,将结果存储在某个变量(例如HashMap)中,关闭查询,结果集和连接(或将其返回到池)。当所有这些都完成后(使用适当的try-catch-finally块),任务就可以将数据“发送”到主处理线程
使用TeresaCarrigan在answer中描述的方法,下面是一个“工作线程”如何将数据“发送”到“主线程”的示例:
输出如下所示: