由Action是否是執行緒安全的引發的思考

2021-08-30 18:25:59 字數 594 閱讀 9943

不知道從哪個地方入的口,一直看到action是否是安全的,在網上找了一大通答案。亂的很,有的說action是執行緒安全的,有的說是執行緒不安全的。最後發現,原來說執行緒安全的是基於struts2的,而說執行緒不安全的是基於struts1的。

總結:struts1中,每乙個action在web容器中只會有乙個例項,因此它是不安全的(我們必須明白什麼樣的變數是執行緒安全的,方法內的區域性變數和方法的引數變數都是執行緒安全的,所以即使系統只啟用乙個action物件為所有執行緒服務,因為form物件對每個請求來說都是單獨建立的,而且是做為引數傳到action裡,所以form物件一定是執行緒安全的. )只要在action中不使用例項變數就可以避免執行緒不安全的問題了。

struts2中,action是多例項的,每乙個請求會建立乙個action。

struts1 action是單例模式並且必須是執行緒安全的,因為僅有action的乙個例項來處理所有的請求。單例策略限制了struts1 action能做的事,並且要在開發時特別小心。action資源必須是執行緒安全的或同步的;struts 2 action物件為每乙個請求產生乙個例項,因此沒有執行緒安全問題 。

servlet也是執行緒不安全的。有關於servlet的執行緒安全問題請看這篇文章:

linux write 函式 是否是 執行緒安全的?

我做了兩個實驗 第乙個實驗,建立乙個本地檔案,然後用5個執行緒對這個檔案進行寫入,結果前面的寫入內容被後面的寫入內容覆蓋 對write函式加鎖之後結果就正常了,就似乎驗證了write函式是非執行緒安全的。第二個實驗,建立乙個客戶端的tcp socket,然後用5個執行緒對這個socket進行寫入 伺...

python 中 list 是否是執行緒安全的?

是不是不共享資料就不會發生執行緒不安全?執行緒安全就是多執行緒訪問時,採取了加鎖的機制,當乙個執行緒訪問該類的某個資料時,進行保護,其他執行緒不能進行訪問知道該執行緒讀取完,其他的執行緒才可使用,不會出現資料不一致或資料汙染的問題 執行緒不安全就是不提供資料訪問保護,有可能出現多個執行緒現後更改資料...

new執行緒是否安全

首先宣告,此帖為錯誤帖,希望大家能作為反例來看。希望大家能指正 當時,就是因為加入的是單執行緒執行時庫,導致new和delete操作出錯。後來,在看書的過程中,才知道,windows中,堆是屬於程序的,當多個執行緒對堆進行操作時,是需要加鎖的,如果匯入的是多執行緒執行時庫,那麼,在new和delet...