Java servlet容器/ Web服務器通常是多線程的周拐。
為了確保servlet是線程安全的,必須遵循以下基本規(guī)則:
- servlet service()方法不應該訪問任何成員變量最仑,除非這些成員變量本身是線程安全的币叹。
- servlet service()不應該重新分配成員變量绣檬,因為這可能會影響在service()方法內執(zhí)行的其他線程。如果您確實需要重新分配一個成員變量缩焦,請確保這是在一個同步塊內完成的读虏。
對線程不了解的可以看我的文集: java并發(fā)學習筆錄 做深一步的了解责静。這里就不多介紹變量和線程安全的問題。
下面是一個圖表盖桥,說明了上面提到的servlet并發(fā)規(guī)則/問題灾螃。 紅色框表示您的servlet的service()方法應該小心訪問的狀態(tài)(變量)。image.png