美文网首页
Servlet接口设计时线程安全问题分享

Servlet接口设计时线程安全问题分享

作者: 唐T唐X | 来源:发表于2017-03-14 11:15 被阅读26次

最近在用Servlet设计接口用来测试时,发现一个奇怪的问题。
就一个很简单的程序,功能是接收客户端的请求,从数据库中获取数据,然后返回。
话不多说,先上代码:

图片.png

好了,接口开发完了,我们用Jmeter测试一下这个接口的情况,用单并发循环100次:

图片.png

从结果开,很不错,接口没有失败的(Error %= 0),那我们把并发变成2,同样循环100次:

图片.png

出问题了,ERROR % = 1.00%, 代表接口返回出了问题,那我们看下问题的原因是什么:

图片.png

竟然是空指针,但是Jmeter给的信息也太少了,我们可以再查一下tomcat的日志:

图片.png

好了,这样就清楚了,是rs这个实例为空,但是为什么会这样呢?
仔细查了一下代码后,并再看了一遍Servlet的运行原理,发现了问题原来在这句上:

图片.png

在正常情况下,应该每个请求都是一个单独的线程处理,可以代码中却有了一个成员变量“rs”,当然会出现为空的问题,因为也许就在这个线程正要用到rs的时候,另外一个线程已经把他释放了。

那好,现在我们需要做的就是把这个变量变成局部变量:

图片.png

然后我们在用Jmeter试一下并发变成2,同样循环100次:

图片.png

没问题,将并发变成10再试试:

图片.png

没有问题!

好了,这其实对于各位开发同事来说只是一个小问题,没难度。但是它提醒我们,在开发时,我们不仅要关注产品的功能,还要考虑到影响到产品性能或压力下运行的问题。线程安全就是其中之一,测试人员要注意哦~

相关文章

  • Servlet接口设计时线程安全问题分享

    最近在用Servlet设计接口用来测试时,发现一个奇怪的问题。就一个很简单的程序,功能是接收客户端的请求,从数据库...

  • Servlet-08(Servlet小结)

    1.Servlet线程安全问题 (1)为什么说Servlet会有线程安全问题? a. 容器对于某个servlet,...

  • Servlet详解

    一、Servlet中的线程安全问题 二、Servlet的配置对象: 三、ServletContext详解 插入:S...

  • Servlet线程安全问题

    1.线程安全的定义 在《java并发编程实战》给出的定义为:“当多个线程访问某个类时,不管运行时环境采用何种方式调...

  • 2019-10-14 SpringMVC与Servlet接口 S

    SpringMVC与Servlet接口 Servlet接口规范 Servlet 接口 定义servlet接口规范i...

  • Servlet的线程安全问题

    什么是线程安全 《Java并发编程实战》中的定义:当多个线程访问某个类时,不管运行时环境采用何种调度方式,或者这些...

  • servlet的线程安全问题

    分析servlet的优点和缺点: 优点: 动态网页,跨平台,单利的(一个servlet仅只有一个实例)速度快 缺点...

  • Servlet规范总结

    Servlet接口 Servlet规范的核心接口即是Servlet接口,它是所有Servlet类必须实现的接口,在...

  • JavaWeb开发之Servlet的线程安全问题

    为何Servlet会有线程安全问题 当容器收到一个请求之后,会启动一个线程来处理该请求,如果有多个请求到达容器,并...

  • Java线程安全

    线程安全问题的概述 线程安全问题的代码实现 线程安全问题产生的原理 解决线程安全问题_同步代码块 同步代码块:sy...

网友评论

      本文标题:Servlet接口设计时线程安全问题分享

      本文链接:https://www.haomeiwen.com/subject/qmicnttx.html