博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Java】【WEB】servlet线程不安全问题 2018-9-23
阅读量:2490 次
发布时间:2019-05-11

本文共 347 字,大约阅读时间需要 1 分钟。

servlet线程不安全问题

造成的根本原因是:Servlet是单例的,Servlet中的非static的成员变量只有一份,多个客户端好比是多个线程,都访问的是同一个空间.

解决方案:

  1. 让当前Servlet实现javax.servlet.SingleThreadModel接口.

    包装只有一个线程放Servlet,如果有多个线程就排队,如此的话,性能超低(已过时).

  2. 在Servlet中不要使用成员变量,使用局部变量.

    每一个用户,每一个请求都会调用service方法,而局部变量在service方法中,每一次都是新的空间.


Struts1,Spring MVC都是线程不安全的,都是单例的和Servlet类似.

Struts2是线程安全的,因为每一个线程(请求)都是一个新的Action对象.

在这里插入图片描述

你可能感兴趣的文章
大数据领域两大最主流集群管理工具Ambari和Cloudera Manger
查看>>
Sqoop往Hive导入数据实战
查看>>
Mysql到HBase的迁移
查看>>
Sqoop import进阶
查看>>
Hive语句是如何转化成MapReduce任务的
查看>>
Hive创建table报错:Permission denied: user=lenovo, access=WRITE, inode="":suh:supergroup:rwxr-xr-x
查看>>
Hive执行job时return code 2排查
查看>>
hive常用函数及数据结构介绍
查看>>
Hive面试题干货(亲自跟着做了好几遍,会了的话对面试大有好处)
查看>>
力扣题解-230. 二叉搜索树中第K小的元素(递归方法,中序遍历解决)
查看>>
力扣题解-123. 买卖股票的最佳时机 III(动态规划)
查看>>
Django 源码阅读:服务启动(wsgi)
查看>>
Django 源码阅读:url解析
查看>>
Docker面试题(一)
查看>>
第一轮面试题
查看>>
2020-11-18
查看>>
Docker面试题(二)
查看>>
一、redis面试题及答案
查看>>
消息队列2
查看>>
C++ 线程同步之临界区CRITICAL_SECTION
查看>>