0

我正在支持由其他人编写的 Web 应用程序,但我看到了一些有趣的行为。该应用程序使用 struts、spring mvc 和 tomcat 作为应用服务器。

Web 应用程序由某个第三方显示在框架中,并通过链接访问。

单击链接时,两个请求会在两个线程上发送到 tomcat。一个线程应该对用户进行身份验证并初始化数据。另一个线程使用初始化的数据来渲染屏幕。

问题: 有时依赖线程首先启动,导致屏幕上显示错误。但是由于初始化线程仍在处理中,并且在依赖线程之后完成,结果将返回给用户,并在屏幕上显示适当的数据。问题是在初始化线程运行时显示错误。

问题: 这种行为是 struts 或 Spring MVC 中固有的吗?我在应用程序中没有看到导致此行为的任何内容。

我个人希望只启动一个线程并在同步调用中进行初始化和显示。

提前感谢您的帮助。

4

1 回答 1

1

这称为竞争条件。当您开始处理线程时非常常见。它与您正在做的事情无关,但是在运行代码的非常随机的行为以及线程决定触发的任何方式中,它们就是这样做的。

于 2012-09-28T15:10:08.263 回答