gpt4 book ai didi

java - 在 Java 中避免超时/饥饿的常见做法?

转载 作者:塔克拉玛干 更新时间:2023-11-02 18:58:12 25 4
gpt4 key购买 nike

我有一个网络服务,可以将文件写入磁盘,并将其他内容写入数据库。每次写入整个操作需要 1-2 秒。

该服务可以同时从多个客户端调用,但不太可能。假设有 20 个客户端同时调用 web 服务,写入操作必须同步。在这种情况下,某些客户端可能会出现超时异常,因为它们必须等待很多秒。

有什么好的做法可以解决这些情况?就像现在一样,这些方法是同步的(这可能会导致饥饿/超时)。

我是否应该通过删除 synchronized 关键字让所有线程进入 write 方法并将它们的任务放入任务队列以避免超时?这是解决这个问题的正确方法吗?

最佳答案

删除 synchronized 并将其单独放入任务队列中对您没有帮助(因为这实际上是 synchronized 为您所做的)。但是,如果您将 Web 请求放入队列后立即对其进行响应,那么您将减少响应时间。但是以牺牲一些可靠性为代价,因为用户将得到工作已完成的确认,而工作实际上并没有完成(系统可能会在工作完成之前崩溃)。

关于java - 在 Java 中避免超时/饥饿的常见做法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10380053/

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