Java 在下面的场景中是否建议使用Thread.sleep()
我有一个webservice,它调用这个方法Java 在下面的场景中是否建议使用Thread.sleep(),java,asynchronous,threadpool,thread-sleep,servlet-container,Java,Asynchronous,Threadpool,Thread Sleep,Servlet Container,我有一个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.s
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秒后运行的异步任务是更好的选择吗?在这里,我们还必须有一个线程池来执行这些任务
如果最终用户/应用程序不需要webservice调用的任何结果,那么最好不要保留线程。您应该采用异步方式。或者新的servlet容器在耗尽时自动创建额外的线程,我们可以编写这种代码而不用担心这些事情吗?
要自定义此线程池的大小,您应该为
应用程序.properties
或应用程序.xml
文件中的server.tomcat.max threads
属性指定一个非零值。或者新的servlet容器是否在耗尽时自动创建额外线程,我们可以编写此类代码不用担心这些事情?
要自定义此线程池的大小,应在应用程序.properties
或应用程序.xml
文件中为server.tomcat.max threads
属性指定一个非零值
是否计划一个异步任务,该任务在20秒后运行
更好的选择?在这里,我们还必须有一个线程池来执行
不管怎样,这些任务都很重要
是的,这是一个更好的选择,因为使用Thread.sleep(20000)代码>每个请求阻塞一个线程。使用调度线程池,您可以将任务添加到某种队列中,然后使用固定数量的线程执行任务,因此不可能耗尽所有可用线程
是否计划一个异步任务,该任务在20秒后运行
更好的选择?在这里,我们还必须有一个线程池来执行
不管怎样,这些任务都很重要
是的,这是一个更好的选择,因为使用Thread.sleep(20000)代码>每个请求阻塞一个线程。使用调度线程池,您将任务添加到某种队列中,然后使用固定数量的线程执行任务-因此不可能耗尽所有可用线程。hmm。。谢谢@Shinchan最终用户不需要回复。。。这就是我返回的原因。。。你觉得问题1和2怎么样。。谢谢@Shinchan最终用户不需要回复。。。这就是我返回的原因。。。你觉得问题1和问题2怎么样