我支持其他人编写的Web应用程序,我看到了一些有趣的行为。该应用程序使用struts,spring mvc和tomcat作为app服务器。
网络应用程序由某个第三方以框架形式显示,并通过链接进行访问。
单击链接时,会在两个线程上向tomcat发送两个请求。一个线程应该验证用户身份并初始化数据。另一个线程使用初始化数据来渲染屏幕。
问题: 有时,依赖线程首先开始,导致屏幕上显示错误。但是因为初始化线程仍在处理并且在依赖线程之后完成,所以结果返回给用户并且在屏幕上显示适当的数据。问题是初始化线程正在运行时显示错误。
问题: 这种行为是struts或Spring MVC固有的吗?我没有在应用程序中看到导致此行为的任何内容。
我个人想要启动一个线程并进行初始化并在同步调用中显示。
提前感谢您的帮助。
答案 0 :(得分:1)
这称为竞争条件。当你开始处理线程时很常见。它与你正在做的事情无关,但是在运行代码的相当随机的行为中,以及线程决定触发的方式,这都是他们所做的。