【发布时间】:2012-04-30 07:34:29
【问题描述】:
我有一个 Web 服务,可以将文件写入磁盘并将其他内容写入数据库。每次写入整个操作需要 1-2 秒。
服务可以同时从多个客户端调用,但不太可能。假设有 20 个客户端同时调用 web 服务,写操作必须同步。在这种情况下,某些客户端可能会出现超时异常,因为它们必须等待很多秒。
有什么好的做法可以解决这类情况吗?就像现在一样,这些方法是同步的(这可能导致饥饿/超时)。
我是否应该通过删除synchronized 关键字让所有线程进入写入方法并将它们的任务放入任务队列以避免超时?这是解决这个问题的正确方法吗?
【问题讨论】:
-
客户端好像坏了。如果服务通常需要几秒钟,但客户端超时,则客户端超时太快。或者如果客户端应该很快超时,那么超时是正常的,客户端必须优雅地处理它们。
标签: java multithreading synchronization queue