我对多线程编程相当陌生,我希望能够深入了解实现以下想法的最佳方法。
现在我的代码是这样工作的
它是单线程的,因此在处理每条数据并将其写入数据库所需的时间里,新数据进来并排队,这太慢了。我在 4CPU 服务器上运行,但当前设置仅使用 1。
我想将中间部分完成的工作与剩余的 3 个 CPU 分开。我将如何最好地做到这一点?我以为我可以为每条新数据创建一个新线程,但我们在一天之内谈论了数十万个新线程。根据我的阅读,与此相关的开销将非常大。内存对我来说是一个问题,所以如果创建所有这些线程会占用太多内存,我就会遇到麻烦。新线程是否会使用较不繁忙的 CPU,还是会使用相同的 CPU,因为它是同一个 JVM?
如果是这样的话,每条新数据的处理和数据库写入不应超过几秒钟。
我也在阅读有关线程池的信息,但这个想法让我有点困惑,我找不到一个很好的例子。
我在想这样的事情
请帮助多线程新手提出合理的设计!提前致谢 :-)