servlet的線程安全。。。

    servlet的生存週期是由web容器負責的。。。web

大體分爲 實例化,初始化(init),處理請求(service),銷燬(destroy)四步。安全

這裏須要注意的是 一旦servlet被實例化後,一個實例能夠處理多個請求(單例)。。。此時就不得不考慮線程安全的問題。。。this

對於servlet來講,它的共享資源 就是 「實例變量」。。。spa

解決方法大體有如下幾種。。。。線程

1。servlet中避免使用 「實例變量」,須要的地方所有用「局部變量」。。。。code

2。經過同步機制 對實例變量操做進行互斥操做。。。接口

     synchronized(this){ ....}資源

    Lock lock = new ReentrantLock(); lock.lock();....... lock.unlock();
同步

3。強制沒個請求實例化一個servlet。 servlet

    建造一個 實現SingleThreadModel接口的servlet。。。

相關文章
相關標籤/搜索