您的位置:首页 > 理论基础 > 计算机网络

httpservlet, struts1, struts2线程安全,单实例,多实例几个关系

2012-09-14 18:18 267 查看
总结如下

线程安全条件:

1)常量始终是线程安全的,因为只存在读操作。

2)对构造器的访问(new 操作)是线程安全的,因为每次都新建一个实例,不会访问共享的资源。

3)最重要的是:局部变量是线程安全的。因为每执行一个方法,都会在独立的空间创建局部变量,它不是共享的资源。局部变量包括方法的参数变量。

线程不安全条件:

1)单实例多线程并且该实例有类变量

Runnable safe=new ThreadSafe();

Thread thread1=new Thread(safe,"thread1");

Thread thread2=new Thread(safe,"thread2");

线程不安全到安全转换:

1)加synchronized

2)? 把单实例多线程转换成多实例多线程

httpservlet:

它是单实例多线程,有可能线程不安全(当含有类变量),线程不安全转换安全方法

参考:http://tech.163.com/05/0523/14/1KEML1JS00091589_2.html

struts1:

它是单实例多线程,线程安全,因为没有类变量,执行通过execute

struts2:

它默认是单实例多线程,线程不安全,因为有类变量,线程不安全转换安全方法

就使用scope=prototype来指定是个原型模式,就变成多实例多线程。参考文章:
http://japi.iteye.com/blog/432617 http://wsqwsq000.iteye.com/blog/1120671 http://tech.163.com/05/0523/14/1KEML1JS00091589_2.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: