servlet的線程安全問題
(1)產(chǎn)生線程安全問題的原因:
默認情況下,某個Servlet在容器當中,只有一個
實例(不管有多少個請求)。
如果有多個請求到達容器,容器會啟動多個線程
來處理請求,此時,就有可能多個線程會同時訪問
某個servlet實例,如果這些線程訪問了線程不安全的
資源(比如修改了servlet的某個屬性值),就會產(chǎn)
生線程安全問題。
(2)如何解決?
a, 使用synchronized加鎖,不要對整個
service方法加鎖,而是對訪問臨界資源的
代碼加鎖。
b, 讓servlet實現(xiàn)SingleThreadModel接口。
容器會為實現(xiàn)了這個接口的servlet創(chuàng)建多個實例。
不建議使用。
c, 盡量避免對servlet屬性值進行修改。
![]() | ![]() .. 定價:¥225 優(yōu)惠價:¥213 更多書籍 |
![]() | ![]() .. 定價:¥133 優(yōu)惠價:¥133.0 更多書籍 |