在servlet中定義全局變量的時候,開發者最關心的就是多用戶同時操作是,servlet是單例還是多例了,多例的話,全局變量沒有任何問題,如果是單例的話,那么全局變量的值就會影響到其他用戶。servlet是單例多線程。
(網上對於servlet是否是單例多例的說法:servlet 常用的兩種有在web.xml 中聲明,以及實現SingleThreadModel方式。web.xml 里聲明幾次,就會有幾個實例;SingleThreadModel:官方已經廢棄,最多有20個實例);
下面說說單例多線程中 全局變量的使用:個人用的最多的就是 ThreadLocal,用ThreadLocal 來定義變量,這個相當於在線程級別定義了一個變量,實際上就是一個map對應的threadId:value。
示例:public class Th{
ThreadLocal<String> threadLocalString =new ThreadLocal<>(){
public String initialValue(){
return "";
}
};
private void main([] args){
Th th=new Th();
Thread a = new Thread(th);
Thread b = new Thread(th);
Thread c = new Thread(th);
}
}