我有一个 tomcat 服务器,其中有一些运行时间相当长的操作,我觉得如果将这些操作分解并并行处理,可以大大加快速度。就此而言,最佳做法是什么?
我担心,如果我只是创建一些由所有用户共享的线程池,当服务器有许多用户执行这些操作时,性能将不可预测并且会下降(因为他们都将竞争池中的线程)。解决方案只是创建一个非常大的池吗?
任何指导将不胜感激!
最佳答案
线程池是一个诱人的解决方案,但正如您所怀疑的那样,它的可扩展性在真实的多用户场景中可能会受到限制。
实际上,无论如何你都会受到 cpus 数量的限制,而且大多数时候你的用户数量会超过 cpus,所以我的经验是尝试并行化在 web 服务器上运行的问题是徒劳的,除非你有一个疯狂的 CPU 数量。
关于java - 多线程并行处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30519694/