【发布时间】:2017-12-29 17:50:05
【问题描述】:
我有一个调用这个方法的webservice
public void process(Incoming incoming) {
// code to persist data
...
Thread.sleep(20000);
// check persisted data and if status != CANCELLED then process
}
要求是我必须等待20秒(因为业务很可能会在20秒内发送取消请求,这种情况我们不应该处理)。
我知道 Thread.sleep() 在时间到之前甚至不会打扰 cpu。
- 但令人担忧的是,由于它是从 Web 服务调用的,因此这些线程可能来自某种池,如果大量请求到来,可能会耗尽?
- 或者新的 servlet 容器是否会在耗尽时自动创建额外的线程,而我们可以编写这种代码而不用担心这些事情?
- 调度一个在 20 秒后运行的异步任务是不是更好的选择?同样,无论如何,我们必须有一个线程池来执行这些任务。
【问题讨论】:
标签: java asynchronous threadpool thread-sleep servlet-container