Java Axis2,使用Thread.sleep执行阻塞

Java Axis2,使用Thread.sleep执行阻塞,java,thread-safety,axis2,sleep,Java,Thread Safety,Axis2,Sleep,我目前正在使用axis2编写Java Web服务。但是,有一个特定的请求需要我在另一台服务器上持续轮询状态大约3-10秒 我想使用Thread.sleep进行轮询,每500毫秒一次,持续3秒。它是否有性能问题之类的含义,或者有人能提出更好的建议吗 编辑 我的架构是这样的 客户端axis2服务器轮询3-10秒另一种模式是让原始调用者返回一个received_ok标志,然后在结果从第二台服务器返回时将其存储在服务器上。然后,第一台服务器将重新连接,然后您可以返回结果,或者返回结果尚未返回的事实。这样

我目前正在使用axis2编写Java Web服务。但是,有一个特定的请求需要我在另一台服务器上持续轮询状态大约3-10秒

我想使用Thread.sleep进行轮询,每500毫秒一次,持续3秒。它是否有性能问题之类的含义,或者有人能提出更好的建议吗

编辑 我的架构是这样的


客户端axis2服务器轮询3-10秒

另一种模式是让原始调用者返回一个received_ok标志,然后在结果从第二台服务器返回时将其存储在服务器上。然后,第一台服务器将重新连接,然后您可以返回结果,或者返回结果尚未返回的事实。这样做的好处是,您可以将轮询委托给另一个实例,而不必占用原始服务器。

有许多不同的选项:

如果您可以更改客户机,那么将等待移到客户机中可能是一个好主意。这意味着服务器没有挂起大量线程

因此,您将有两个web服务,一个用于初始化请求,另一个用于获取结果。客户机(而不是axis服务器)将调用第一个web服务,然后调用第二个web服务可能会多次

这样做的好处是,您不必在服务器中处理线程(这大大简化了生活)。线程代码在客户端中


如果您最终在服务器上睡眠,请确保您有足够的线程,如果您使用的是Tomcat,请参阅我不太明白。你能更深入地解释一下吗?另外,我已经编辑了我的问题。通话是否需要同步?如果没有让客户端发布服务器返回的“已接收”信息,服务器将执行其操作并存储数据。客户端稍后将重新连接并获取数据。是。它需要同步,因此对连接我的用户/客户端是透明的。我也想到了你的建议。但我更喜欢一次性断开连接。:)只是,我不确定我的方法是否正确。如果我坚持睡眠模式,thread.sleep是一种邪恶的做法吗?一般来说,如果可以避免,在web服务器上进行睡眠被认为是不好的做法,因为它会束缚线程,但我看不出有任何真正的问题。如果你在做块读,你会等待,这是同样的事情。明白了。谢谢这种要求将是非常罕见的。