线程安全的标准只有一个:
代码中是否用到具有可以改变的(writable)的成员变量(不管是静态还是实例变量)。

如果有writable的成员变量,那么不是线程安全。这样的类或对象 称为 stateful。

如果只有Read-Only成员变量,没有writable成员变量,那么是线程安全。
这样的类或对象 称为 stateless。

> 对于线程我有以下的理解,不知是否正确,请高手指点一下:
>
> 1、只要类或者类的方法没有使用公共变量,则这个类或类的?> 法就是线程安全的。就不需要同步。
> 2、入上所说得类如果是安全的,那么多个线程同事调用这个?> 的唯一实例和多个线程调用这个类的线程池中的实例,有什么
> 煌歉龈茫浚ㄒ陨系南敕ㄊ腔凇懊康钡饔美嗟姆椒ㄊ保
> 系统会在内存中产生新的栈区,来存放这个方法的副本“这样
> 睦斫猓?>

1.需不需要同步不是看有没有公共变量,而是看这个变量是否有多个线程并发访问。
2.如果单个实例可以同时被多个线程访问,那这样效率最高,比如Servlet就是这样。如果实例只能同时被一个线程访问,比如SessionBean以及实现了SingleThreadModel接口的Servlet,要提高效率,使用Pool。二者对比,当然是单实例的效率高。Servlet比SessionBean快,还有什么疑问吗?

我也不太会。