2012-09-28 33 views
0

我支持由其他人編寫的Web應用程序,並且我看到一些有趣的行爲。該應用程序使用struts,spring mvc和tomcat作爲應用程序服務器。向多個Web應用程序發出多個線程請求的線程順序

Web應用程序由某個第三方顯示在框架中,並通過鏈接訪問。

當鏈接被點擊後,兩個請求被髮送到兩個線程上的tomcat。一個線程應該認證用戶並初始化數據。另一個線程使用初始化的數據來渲染屏幕。

問題: 有時,相關線程首先啓動,導致屏幕上顯示錯誤。但是,因爲初始化線程仍在處理中,並且在依賴線程之後完成,所以結果返回給用戶,並且相應的數據顯示在屏幕上。問題是在初始化線程運行時顯示錯誤。

問題: 這是行爲在struts或Spring MVC中固有的東西嗎?我沒有看到導致此行爲的應用程序中的任何內容。

我個人喜歡在一個同步調用中啓動一個線程並進行初始化和顯示。

在此先感謝您的幫助。

+0

如何點擊鏈接生成2個請求到Tomcat?你能解釋一點嗎? – Gray

回答

1

這被稱爲競賽條件。當你開始處理線程時非常普遍。它與你在做什麼沒有關係,但是在運行代碼的非常隨機的行爲和線程決定觸發的方式中,這就是他們所做的。

+0

這個答案和上面格雷的問題我相信第三方已經實現了鏈接無需啓動兩個線程。我不知道他們是如何做的,但我確定他們是。感謝大家。 – peekay