问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

struts1单例问题

发布网友 发布时间:2024-10-02 17:16

我来回答

2个回答

热心网友 时间:2024-10-11 04:26

这里面涉及几个方面的问题,一个是tomcat服务器的多线程单实例,另一个是单例的线程安全问题。

先理解下为何会有线程不安全的问题,比如有一个类Person 有个属性是name,线程1修改了这个属性的name,要进行存入数据库操作的时候,线程2又修改了这个name,这样线程1就存入了一个线程2修改过的数据了。

再了解下tomcat的工作机制,tomcat 是多线程 单实例, 所谓的多线程是指 多个tomcat的访问者都有自己的一个的新线程,线程访问进程的资源,如果某个资源(比如:类) 是单例模式的,则多个线程都会访问到同一个类的对象。关键点在这里,如果这个单例的类中有全局变量,那这个单例就是线程不安全的,如果你的单例类没有全局变量,每个线程去访问单例类中的方法,是不会出现线程安全问题的。

比如:
Java code

public class SampleAction extends Action {
private String user = null; ...
}

如果有多个用户上来访问这个SampleAction,而且每个用户都要来修改user属性或者说是要对user进行某种操作,那么这就是一种线程不安全的情况。
但是,如果你不定义这个user属性,也不定义任何其他属性,那么这个SampleAction就不存在线程不安全的问题。还有种情况,如果你这个属性定义成final的,只是在初始化的时候进行一次赋值,以后所有的操作都只是读取、而不会修改这个属性的值,那么也不会有线程安全的问题。

再比如,有一个类User,你每次使用这个类的时候都是new出来的,那么这个类一定是线程安全的吗?也不一定。
Java code

public class User {
private static String name = null;
public User(String name) {
User.name = name;
}
}

对于这个User类,即使你每次都是new一个新的,它也不是线程安全的。

因此通过上述的理论,回头看下你提出的问题,在struts1中,多线程是可以同时访问单例的actionA、actionB,因为在Struts1中的action是没有定义全局变量的,所以不会出现线程安全的问题。

热心网友 时间:2024-10-11 04:31

不同线程访问同一个对象的同一个方法,是互不影响的。

就是说前一个用户访问actionA没有访问完,后一个用户也可以同时访问,且互不影响。

但是如果方法上加了 synchronized 那么第二个访问的会等待第一个访问的完成才能继续。

所以不要在方法上加入 synchronized 如果你不知道你在干什么。

方法中的变量是局部变量,同时访问方法的话,会产生多个局部变量。

类中的变量是成员变量,是共享的,所以Action中要避免使用成员变量。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
税票开了对方不打款可以作废发票吗 开具发票,对方不付款,可以作废发票吗 海南体检哪个医院好 每天一张简笔画|hellokitty(内含详细步骤) 白金卡兑换的东西在哪里能找到呢 欢乐斗地主白金卡是做什么用的 qq欢乐斗地主白金卡专享赛有什么好处吗?地主高手们请回答?谢谢了!_百度... 美女麻将游戏简介 决战平安京麻将棋新手玩法攻略 电脑文件夹发白怎么回事电脑图标变成白色的怎么办 web项目集成struts1时的小白问题求解 帮我解释一下Struts1的配置文件的参数是什么意思! 请问这几个汉字跟英文,都是什么字体? 请问这个图片上的中文字和英文字分别是什么字体 很急非常感谢 怎么设置每页打印一样的表格呢? 大家好啊 struts1中从action1中跳转到action2中。这两个action的formbe... 劳务公司的注册资本增加了它的劳务资质需要变更吗变更步骤是什么? struts1中如何实现不同的角色登录不同的页面 最好有代码 急用!!! 相亲女孩突然不理我了,微信全都不回!要不要问问她妈妈是什么原因 相亲女孩不回微信,我要主动点吗? 红安钓鱼台旅游景区门票 ...但接下来几天不接电话不回短信,发微信有时候等好久才回,​这是... 宝鸡市红安机械制造有限公司怎么样? 如果第一次约会之后女生不感兴趣还会回复微信吗? 来个个性签名,付磊 oppo手机和步步高的手机哪个好?? 为什么我用鼠标放在别人QQ头像上 他的头像左上角会往里折? 我已经是QQ会员了,怎样可以弄出 鼠标一触碰头像 头像的左上角就会... 谁有帅气的黑白QQ头像(我是男的)。。。请尽量别在网上找,我都看过... 谁有类似于这样的QQ头像,要男的 struts1的更新问题。在struts1中有两个action方法A和B A用来获取页面元... struts1中如何实现不同的角色登录不同的页面 最好有代码 急用!!!_百... ...抱住他时候唱的歌,歌曲基调感觉很凄婉,好像是...you不是 ...歌词里好像有summer,歌曲基调起伏很小,此歌曲不是新歌。 求一首歌,歌词里好像有“想你的人啊”还有“做一件孔雀羽衣”,是... 赶集网和58同城招聘澳门香港工真还是假 家里有一个特别会做各种美食的吃货,是一种什么感受? 家里有个吃货是什么感觉? 有一个吃货母亲,作为儿子是什么样的感受 重置mysql root密码 魔兽外域怎么去 支付宝一字千金红包在哪里介绍_支付宝一字千金红包在哪里是什么_百度知 ... MySQL8.0 基本修改用户名密码创建用户(有待补充) 像“高洁”“正直”这样的形容词 初一综合性学习查和月亮有关的资料(如谚语、成语、诗句、传说等)知道... 写几个含有“月"字的成语,三年级的 沙棘酸奶西米露的做法有什么特别之处? 请教各位高手:为什么我平板在我自己电脑上只能看到文件夹,看不到里面... 用U盘插到电脑上玩游戏,能从哪里看出玩过游戏,从哪里删除,各位高手帮帮... 为什么微信附近的人有时候不准啊?