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