多个线程共用一个servlet实例的问题

多个线程共用一个servlet实例的问题

servlet基于单例多线程,利用多线程技术来提供web服务。在使用多线程时,多个线程共用一个servlet实例,所以不应该在servlet类中使用存在状态的变量或者对象。

这里对存在状态的变量或者对象不是很理解是什么变量或什么对象。

还有:

如果多个线程共用一个servlet实例,并且这个servlet类中定义了存在状态的变量或对象,比如定义了HashMap这样的类型用来存储数据。在多个线程共用这个对象时,会发生什么的问题?

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,

1、这里存在状态的对象是指有无实例变量的对象

而存在状态的变量是指在Servlet类中定义的全局变量

2、可能会引起线程安全的问题

祝学习愉快~


  • 超人迪加123 提问者 #1
    无实例变量的对象包含所有 new出来的对象实例吗?还是要细分一下? 全局变量指的是在类内直接声明的固定不变的常量吗?包含static修饰的变量吗?
    2020-05-28 13:25:28
好帮手慕小脸 2020-05-28 16:18:44

同学你好,

1、是的,无实例变量的对象包含所有 new出来的对象实例

2、是包含static修饰的变量的

祝学习愉快~


  • 提问者 超人迪加123 #1
    老师您好,意思是说,不能在servlet类里面new任何对象吗?
    2020-05-28 17:07:54
  • 提问者 超人迪加123 #2
    servlet承担控制器的作用,所以它不作过多的逻辑判断,也不new,这些工作交给业务层与dao层实现是吗?
    2020-05-28 17:09:54
  • 好帮手慕小脸 回复 提问者 超人迪加123 #3
    同学你好,上述理解都是正确的呢 祝学习愉快~
    2020-05-28 18:39:31
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师