分情况吧。servlet是单例的,当servlet中有成员变量时,线程不安全;如果servlet中没有成员变量,或者说成员变量使用threadlocal修饰,其实并不会出现线程安全的问题
首先要明确,线程不安全是因为多个线程修改同一个变量。比如线程A修改变量为1,线程B紧跟着也修改变量为2,线程1感知不到,以为变量还是1。但是,如果一个对象的属性是不可变的(不可变状态),或者根本就没有属性(无状态),那么自然就不存在线程安全问题了。
多个线程在调用同一个对象中的方法,也仅仅只是在各自的虚拟机栈中创建了一个栈帧。那么如果方法中会修改其他的对象的属性呢?那还线程安全吗?肯定的啊,我只是保证当前对象的线程安全性,至于他内部对其他单例对象的修改,那要看其他对象是不是线程安全的。