我有2个不同的操作,我同时从相同的主机获得对这2个操作的响应。
我想将一个动作延迟30秒。
我尝试使用Thread.sleep(30000)
,但似乎延迟了两个动作。
这两个操作都是后台进程,因此我无法使用 ExecuteAndWaitInterceptor 。
以下是我想要延迟的行动。
@Namespace(StrutsConstants.Namespace.PUBLIC)
public class CCAveDNHandlerAction extends BaseRequestResponseAwareAction {
private static Log log = LogFactory.getLog(CCAveDNHandlerAction.class);
public String execute() throws ModuleException {
log.info("CCAveDNHandlerAction ### Starting..");
try {
Thread.sleep(30000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Struts2文档说,在2个不同的线程中执行了2个不同的请求。
但在这种情况下,它并没有发生。可能是因为2个请求来自同一个主机。有没有办法强制某个动作在单独的上下文中执行?
这是工作流程。
Thread.sleep
执行此操作,整个过程暂停。答案 0 :(得分:2)
您可以使用Timer并执行TimerTask定义来调用您的操作。然后你需要做的就是为每个调用的timertask做一个时间表,从而调用你的行动。
有关javadoc @ http://docs.oracle.com/javase/7/docs/api/javax/swing/Timer.html
的详情GL