在java Web项目中,用户将其任务发送到Web。为了处理这些任务,我使用一个包含10个线程的线程池来处理它们的任务。每个任务都将构建到一个线程并发送到线程池。线程池设计为静态变量,这意味着所有任务(线程)共享相同的线程池 今天有200名用户来到我的网站,然后,他们抱怨他们的任务运行得很慢......
taskThread.start()
?答案 0 :(得分:0)
通常,您会弄清楚您的处理的IO绑定方式以及您可用的核心数量。完美的公式将是:
number_of_cores*(1/cpu_sticky)
其中cpu_sticky介于0和1之间。因此,如果您认为它是高度IO, cpu_sticky非常低(比如说.1),而高CPU密集型的cpu_sticky很高(比如说.9)。
最有可能的是,代码需要长时间的数据库搜索或搜索才能锁定数据库中的一行或多行,因此一个或多个线程需要等待完成。在那种情况下有很多线程,但每个线程仍然很慢。