线程安全主要体现在对资源的占有方面的问题,笼统来说可以称“小气”为线程安全 “大气”为线程不安全
“小气”:当你占有某个资源时候不愿于他人同时分享
“大气”:愿意和他人同时分享
举个我在javaeye看见的一朋友的帖子里的 这个例子很有趣
1.你和小秘在屋里亲热,屋子没上锁,老婆冲进屋,这是线程不安全。
这里你和小秘在屋里亲热是一个线程,老婆冲进屋是一个线程。屋子是资源。
你和小秘在屋里亲热,屋子上锁,老婆冲不进屋,这是线程安全
因为资源上锁后你老婆被阻塞了。
归结到底是资源的占有问题
如果你能克制住不用全局变量的话 就不存在线程安全问题了。
struts2中的action是线程安全的 struts1不是 action和sevlet一个只有一个实例 但是struts2中的action对于每次请求都会新建一个action就不存在”线程安全问题“
引用javaeye里面哥们的话:
struts的action和servlet是一样的 只有一个实例 所以全局变量会有问题 这个好像是对他批评比例最高的一个地方了 所以后来才有人想了办法 用Spring包装一下 把action包成bean 每次都用一个新的bean 类似WW那样 每次点击都是新的action
如果你能控制住 不用全局 一般是不会有问题的 具体安全不安全 还是要看code是怎么写的 这个只是有可能会出问题而已。