由于,一般情況下系統只生成servlet的單一實例,之后,為每個用戶請求創建新的線程。這樣的話,可能出現多個線程并發地訪問同一個servlet對象。
原則上可以實現SingleThreadModel,可以保證不會有多個請求線程同時訪問該單個實例。但是這不是個好選擇。
原因一,如果servlet被頻繁訪問,那么同步會對性能造成極大的等待時間。
原因二,現在服務器可以使用多個實例來處理請求,這樣的話仍然會出現并發訪問的問題。
一個好的方案,就是明確地同步對代碼的訪問。
synchronized(this){
................
}