如果同时有多个请求,多线程是否会提高性能?

我正在使用托管在Tomcat 7上的Spring 3开发一个Java Web应用程序,它需要处理超过2.5k的请求/秒.我有一个RequestProcesseor类,每个HTTP请求使用此方法进行处理:

@Service
public class RequestProcesseor {

    public void processSomething(int value1, int value2) {
        // process something...
        // create and deep copy some object
        // some BigDecimal calculations
        // maybe some webservice calls
    }

}

同时有超过2.5k的请求,并将调用processSomething方法.如果我让这个课程多线程.它会改善性能吗?如果是,为什么?我该如何证明呢?

服务器有一个4核CPU.

最佳答案
即使您没有显式执行任何多线程,您的应用程序服务器也会隐式地将每个请求分派给它自己的线程,因此您已经在CPU上进行了并发加载.

如果您的请求处理受CPU限制,并发代码将仅对您有所帮助,这种情况很少发生.通常,瓶颈是数据库,或者更一般地说,是与其他后端子系统的接口.

如果通过处理大量内存数据来处理每个请求,并且如果每秒请求负载较低,则可以在几个线程之间小心划分工作,而不是超过实际的CPU核心数.

因此,由于您的服务器负载很重,因此通过将工作分派给多个线程几乎肯定无法提高其性能.请注意,通过多线程破坏性能非常容易.

转载注明原文:如果同时有多个请求,多线程是否会提高性能? - 代码日志