servlet執行緒安全問題

2021-04-06 16:01:59 字數 500 閱讀 8132

最近在想乙個jsp和servlet的執行緒安全問題。

據我現在的理解:servlet中的例項變數是非執行緒安全的(變數在堆上),而service,dopost,doget方法中宣告的變數是執行緒安全的(變數在棧上)。web伺服器中只維護乙個servlet的例項,每次客戶端的連線新開乙個執行緒處理。那麼這裡的執行緒安全是不是說多執行緒類中類變數的執行緒安全問題呢?

我們知道多執行緒類中的例項變數每new 乙個執行緒的話都對產生乙個新的例項變數,所以servlet不大可能是執行緒類的例項變數。當然也不象是引數變數和臨時變數。那麼servlet類在這個多執行緒類中是不是就是乙個靜態類變數呢?

還有就是struts框架中的action類也不是執行緒安全的。據我了解,actionservlet類會delegate部分行為到action中去執行。那麼是不是可以這麼理解:基於setlvet 的web伺服器中,所有servlet或者servlet delegate到的類變數都不是執行緒安全的,唯一安全的是類方法中的不是類的臨時變數,如果臨時變數中有類變數的話,此規則遞迴。

servlet執行緒安全問題

servlet執行緒安全問題 a.容器在預設情況下,只會建立乙個servlet例項 物件 b.容器收到乙個請求,就會啟動乙個執行緒來處理。如果有多個請求同時訪問某個servlet,就會有多個執行緒呼叫同乙個servlet例項,就有可能產生執行緒安全問題 比如,這些執行緒要修改servlet的屬性 2...

Servlet的執行緒安全問題

1 servlet 是執行緒不安全的。2,關於使用 singlethreadmodel servlet 實現了該介面後,表面上可以保障 servlet 的執行緒安全問題,但 是也存在問題 1,web容器對實現了 singlethreadmodel 介面的servlet 會採取兩種策略第一種是為每乙個...

Servlet中的執行緒安全問題

servlet中的執行緒安全問題 有共享時才會有執行緒安全問題 當有多個使用者同時訪問時,比如頭乙個使用者應該得到的資料是1,但是其他的使用者在這個使用者還沒拿到資料時訪問就會使i 這個造成了執行緒安全問題 解決方案一 synchronized this catch interruptedexcep...