首先,我知道这稍微宽泛且基于意见,但我只想简单回答多线程在Java中使用SQL查询的应用程序的最佳实践。
我正在制作一个程序,需要在主线程的每次迭代中同步MySQL数据库中的数据。我想多线程这个程序,以便长查询不会保持主线程并减慢它的“滴答”速率。
我不善于解释我用语言提出的解决方案,所以我制作了这张图片,希望能更好地解释它们。
这些方式中的任何一种都是“正确”的做事方式吗?
我记得有些事情可能会一次发送多个查询,然后在最后等待结果,这是否可能,一次应该发送多少个查询?
是否应该为每个查询使用单独的线程,如果是这样,我怎么能更快地实现这一点,因为我理解创建线程的开销非常大。
感谢您阅读我可怕的措辞和非常长的问题,提前感谢您的帮助。
答案 0 :(得分:1)
MySQL可以并行执行查询,但不是很多(我认为10-15)。所以我会创建一个10-15个线程的池,带有用于查询的公共阻塞队列,每个线程都有自己的数据库连接。每个工作线程执行一个循环:接下来的查询,访问DB,以某种方式返回结果。玩线程数以找到最佳状态。