gpt4 book ai didi

java - 多线程提高性能

转载 作者:行者123 更新时间:2023-11-29 12:31:56 29 4
gpt4 key购买 nike

我有一个数据库表requests_pending,其中包含要处理的用户请求(消息)。传入请求的速率为 1000 个/秒。处理请求后,将从 requests_pending 表中删除该请求并插入 requests_processed 中。每个请求的响应都会插入到响应表中,然后发送给用户。为了跟上传入的请求,我尝试使用多个线程来获取和处理请求。我在请求获取时使用了同步 BLOCK,以便一次只有一个线程访问表,从而避免重复处理请求。

    synchronized (this) {
fetch request...
}
processRequest();

但是synchronized block 正在减慢应用程序的速度。单个线程比多个线程性能更好,我猜是因为没有同步开销。任何提高性能的替代方法。

最佳答案

Single Thread is performing better than multiple Threads, I guess because there is no synchronization overhead.

这句话对我来说没什么意义,但是在每秒 1000 个的速率下,同步开销肯定是无关紧要的。

正如 Marko Topolnik 所写,专用线程很好地解决了这个问题。让单个线程获取所有要处理的请求,将它们全部提交给 Executor,然后将其删除。如果没有找到请求,就睡一会儿。

插入可以由每个工作线程完成,或者您可能希望为其指定另一个线程(轮询队列)。

关于java - 多线程提高性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27358881/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com