java线程,单例,多例的问题

最近在学习线程方面概念有点混淆,想请教下各位大神.
假设我把一个Web程序放在了服务器,假设现在有100个人访问我的Web,
那我是否可以理解为是100条线程同时访问我服务器上的这一个web程序的login方法,
问题:这个多端同时访问这个方法是否涉及到线程安全的问题,还是说互联网的工作原理是每个人分配一套web程序服务,互不影响,不不干扰。

4个回答

有100个人访问我的Web,不一定有100个线程,web服务器有线程队列,同时并发小于100,多于的会排队等前面执行完。

每个页面(bean)的变量,是成员变量,互不干扰,不会有线程冲突,只有全局变量、静态变量才需要同步。

A_A333
A_A333 ok,谢谢啦,我自己去弄清楚
2 年多之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复A_A333: 不知道你说的action是什么,如果是mvc里的动作方法,那么不要用单例
2 年多之前 回复
A_A333
A_A333 嗯嗯,感谢,理解了意思,那可以问多个问题吗,那action定义为多例和单例有什么区别
2 年多之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复A_A333: 不叫“变量池”,而是每个线程有独立的堆栈,堆栈上存储的是局部变量。
2 年多之前 回复
A_A333
A_A333 那可以这样理解?每个客户端所拥有的变量,方法都是独立的,拥有自己变量池,然后排队执行同一个方法,当到自己的时候,从自己的池里取出变量。所以就是不相互影响的。
2 年多之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复A_A333: 和单例没有关系,如果你没有同步,单例也有同步问题。
2 年多之前 回复
A_A333
A_A333 假设我的structs action类是单例的,并不是多例,这样会触发线程问题吗,会100个人公用这个类吗
2 年多之前 回复

举个例子。
Spring MVC是单例多线程的方式实现,所以controller里的成员变量可能会导致同步问题,当然我们在注入的时候,service等也都是单例,而且是状态不会变化的,所以不会有同步的问题;如果你在controller里面定义一个count的变量,每次请求修改count来标记访问的次数,这时候就可能出现同步问题了;
而struts2是每个请求创建一个action,所以不会存在同步问题。

A_A333
A_A333 jvm准备开始了解,看完并发编程先,谢谢啦
2 年多之前 回复
qq_15259781
ClassNotDef 局部变量是线程私有的,所以只有线程自身能访问;成员变量是共享的,所以多个线程都能访问。看看jvm就了解了,我也是了解个大概
2 年多之前 回复
A_A333
A_A333 感谢,哈哈,我就是学这并发编程和框架那一块混淆了,单例模式下都是需要无状态的对象对吧,那还有个问题,为什么对象方法里的变量不会引发线程问题,而对象里的变量却会引发线程问题呢
2 年多之前 回复

对于线程这个问题我推荐你看Java并发编程实践这本书,这本书讲了并发处理,以及对线程和进程有了详细的解释。我想对你会很有用处

这个一般不考虑多线程问题,高并发问题,才会考虑。每个用户登录就是一个线程,你担心的问题,web服务器会帮你处理的,例如servlet就是线程安全的容器,如果我没记错

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问