代码中是否用到具有可以改变的(writable)的成员变量(不管是静态还是实例变量)。
如果有writable的成员变量,那么不是线程安全。这样的类或对象 称为 stateful。
如果只有Read-Only成员变量,没有writable成员变量,那么是线程安全。
这样的类或对象 称为 stateless。
如果有writable的成员变量,那么不是线程安全。这样的类或对象 称为 stateful。
如果只有Read-Only成员变量,没有writable成员变量,那么是线程安全。
这样的类或对象 称为 stateless。
1.需不需要同步不是看有没有公共变量,而是看这个变量是否有多个线程并发访问。
2.如果单个实例可以同时被多个线程访问,那这样效率最高,比如Servlet就是这样。如果实例只能同时被一个线程访问,比如SessionBean以及实现了SingleThreadModel接口的Servlet,要提高效率,使用Pool。二者对比,当然是单实例的效率高。Servlet比SessionBean快,还有什么疑问吗?