問題:使用以下的代碼示範servlet的線程安全問題?
同時通路以上的代碼發現三次同時出現3,這就是線程的并發通路的問題。
解決方案就是:同步
給通路共享資源的代碼加鎖。
總結:
1.如果直接使用同步關鍵字,那麼會導緻servlet的運作效率嚴重的降低。
2.盡量避免使用servlet的成員變量。
3.如果避免不了那麼我們就需要使用線程安全的成員變量。
ArrayList
Vector HashSet
如果需要不是線程安全的集合可以使用Collections進行線程安全的轉換
4.ServletContext、HttpSession需要使用的時候一定要使用同步。
5.在servlet中最好使用局部變量。