对“servlet 可以与此同时处理多个请求”的理解
对“servlet 可以同时处理多个请求”的理解
今天在一本书上看到这样一句话“servlet 可以同时处理多个请求”
琢磨一下自认为如下:
当多个request同时来请求一个servlet时,tomcat的工作原理是会对这多个请求分别创建线程
但是每个线程拿到的servlet实例是同一个servlet实例(单例模式),这样的话他们在使用service方法时就会可能出现同时使用,所以如果有需要更改实例状态(共享成员变量的)语句,就要加上锁-synchronized关键字
有具体事例如下
相关推荐
- Java基础学习总结(93)——Java编码规范之代码性能及惯例 1、避免使用包装类构造函数 2、面向接口编程时,推荐使用接口的声明方式 3、单个方法代码行数尽量保持在80-100行之内 4、数据库及磁盘IO等操作,必须在try-catch-finally块的finally中执行close()方法 5、不要在循环体内进行数据库的“连接-关闭”操作 6、大量(如超过五次以上的“+=”运算)的字符串操作应使用StringBuilder或StringBuffer,尽量避免使用String 7、不要在循环条件中使用表达式 8、应尽可能的以指明容量大小的方式对ArrayList进行实例化 9、集合中的数据如果不使用了应该及时释放 10、不要在循环体内声明变量 11、非正常运行产生的异常被捕获后,必须对异常进行处理 12、尽量定位异常类型,不要一律catch(Exception ex) 13、尽量避免一个方法中一个大的try块,catch一个Exception的代码方式,如果有必要可以使用多个try-catc
- .NET面试题集锦② 一、前言部分 1.实现产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。 2.请说明在.net中常用的几种页面间传递参数的方法,并说出他们的优缺点。 3.请指出GAC的含义? 4.向服务器发送请求有几种方式? 5.DataReader与Dataset有什么区别? 6.软件开发过程一般有几个阶段?每个阶段的作用? 7.在c#中using和new这两个关键字有什么意义,请写出你所知道的意义? using 指令 和语句 new 创建实例 new 隐藏基类中方法。 8.需要实现对一个字符串的处理,首先将该字符串首尾的空格去掉,如果字符串中间还有连续空格的话, 仅保留一个空格,即允许字符串中间有多个空格,但连续的空格数不可超过一个. 9.下面这段代码输出什么,为什么? 10.什么叫做SQL注入,如何防止?请举例说明。 11.什么是反射? 12.用Singleton如何写设计模式? 13.什么是Application Pool? 14.什么是虚函
- MySQL数据库高并发优化配置 vim /etc/my.cnf以下只列出my.cnf文件中[mysqld]段落中的内容,其他段落内容对MySQL运行性能影响甚微,因而姑且忽略。 避免MySQL的外部锁定,减少出错几率增强稳定性。 禁止MySQL对外部连接进行DNS解析,使用这一选项可以消除MySQL进行DNS解析的时间。但需要注意,如果开启该选项,则所有远程主机连接授权都要使用IP地址方式,否则MySQL将无法正常处理连接请求! back_log 参数的值指出在MySQL暂时停止响应新请求之前的短时间内多少个请求可以被存在堆栈中。 如果系统在一个短时间内有很多连接,则需要增大该参数的值,该参数值指定到来的TCP/IP连接的侦听队列的大小。不同的操作系统在这个队列大小上有它自 己的限制。 试图设定back_log高于你的操作系统的限制将是无效的。默认值为50。对于Linux系统推荐设置为小于512的整数。 key_buffer_size指定用于索引的缓冲区大小,增加它可得到更好的索引处理性能。对于
- 通讯型高清视频会议摄像机 首先理解一下这几个专业词的含义:(如不想看可以网上查串口通信协议) 波特率: 单片机或计算机在串口通信时的速率。指的是信号被调制以后在单位时间内的变化,即单位时间内载波参数变化的次数。波特率,可以通俗的理解为一个设备在一秒钟内发送(或接收)了多少码元的数据。它是对符号传输速率的一种度量,1波特即指每秒传输1个码元符号(通过不同的调制方式,可以在一个码元符号上负载多个bit位信息),1比特每秒是指每秒传输1比特(bit)。 单位"波特"本身就已经是代表每秒的调制数,以"波特每秒"(Baud per second)为单位是一种常见的错误。 数据位: 利用调制解调器在线路上传输数据时,每传送一组数据,都要含有相应的控制数据,包括开始发送数据,结束数据,而这组数据中最重要的是数据位。不同的通讯环境下,一般规定不同的数据位和结束位数量。 COM端口: 通常用于连接鼠标及通讯设备(如连接外置式MODEM进行数据通讯)等。 一块主板一般带有两个COM串行端口。 什么是串口 串口是
- servlet 初始HTTP 服务器初识 Servle技术 Servlet对请求的处理 请求乱码的解决 Servlet请求转发和重定向 Cookie技术 Session对象 ServletContext对象
- 谈谈小弟我对Struts2文件下传的理解(顺便讲了一上Struts2处理请求的大体过程)
- java面试题整合(持续更新) Redis是如何实现list存储的 SpringMVC的优势、基本原理以及大概的流程 JSP和servlet 的区别 Java中是 怎么解析xml的 MySQL数据库的索引有哪几种?有什么区别? class.forName是什么意思 几种造线程池的方法,区别 ? 面向服务通过什么样的方式实现? 消息中间件 acitveMQ 的作用、原理?几种模式,每种的特点及使用问题?MQ 发送消息失败怎么办? Tomcat 集群中怎么实现共享 在数据库怎么复制表数据和表结构? From表单提交的方法、属性,数据量大的时候用什么方法提交? 服务器宕机如何处理?全部宕机如何处理? java多线程有几种实现方法?都是什么?它们的区别? JDO是 什么?说说你 对JDO的 理解 如何在Jsp中把div或table隐藏起来? TCP和UDP的区别? Servelet在多个请求时存在线程安全问题,请讲一下在servelet编程中要注意什么问题? Quartz怎么配置啊? 服务器集群和ses
- Mysql binlog应用场景与原理深度剖析 1 基于binlog的主从复制 Mysql 5.0以后,支持通过binary log(二进制日志)以支持主从复制。复制允许将来自一个MySQL数据库服务器(master) 的数据复制到一个或多个其他MySQL数据库服务器(slave),以实现灾难恢复、水平扩展、统计分析、远程数据分发等功能。 二进制日志中存储的内容称之为事件,每一个数据库更新操作(Insert、Update、Delete,不包括Select)等都对应一个事件。 注意:本文不是讲解mysql主从复制,而是讲解binlog的应用场景,binlog中包含哪些类型的event,这些event的作用是什么。你可以理解为,是对主从复制中关于binlog解析的细节进行深度剖析。而讲解主从复制主要是为了理解binlog的工作流程。 下面以mysql主从复制为例,讲解一个从库是如何从主库拉取binlog,并回放其中的event的完整流程。mysql主从复制的流程如下图所示:
- odoo配置文件详解 addons模块的查找路径 超级管理员(用于创建,还原和备份数据库的操作) 用于导入导出的csv文件的默认分隔符 data目录, 用于存放session信息,附件 数据库 主机命 数据库最大链接数 指定要使用的数据库名字 数据库密码 数据库端口 创建数据库是使用的数据库模板 用户名 过滤要显示的数据库名称 哪些模块是加载数据库的 用于发送邮件的邮箱地址 在导入大量数据时使用这个选项, 如果在导入期间程序宕机, 你可以在当前状态下继续,指定一个存储中间导入状态的文件名 一个处理器允许使用的最大物理内存 一个处理器允许使用的最大虚拟内存 一个处理器接受的最大请求数 一个cpu最多占用多少处理器时间 一个请求允许的最长实时时间 是否允许显示数据库的长度 是否将log写入db的ir_logging 可以是一组module:log_level对, 默认值是:INFO(表示所有模块的默认日志级别为INFO级别) 日志的级别, 可选值包括debug_rpc_answer, debug_
- 并发编程练习题 1、简述计算机操作系统中的“中断”的作用? 2、简述计算机内存中的“内核态”和“用户态”; 3、进程间通信方式有哪些? 4、简述你对管道、队列的理解; 5、请列举你知道的进程间通信方式; 6、什么是同步I/O,什么是异步I/O? 7、请问multiprocessing模块中的Value、Array类的作用是什么?举例说明它们的使用场景 8、请问multiprocessing模块中的Manager类的作用是什么?与Value和Array类相比,Manager的优缺点是什么? 9、写一个程序,包含十个线程,子线程必须等待主线程sleep 10秒钟之后才执行,并打印当前时间; 10 、 写一个程序,包含十个线程,同时只能有五个子线程并行执行; 12、写一个程序,使用socketserver模块,实现一个支持同时处理多个客户端请求的服务器,要求每次启动一个新线程处理客户端请求
- 关于使用java语言将页面表单信息导出为world格式的文件,该如何解决
- spring security总结(三)——鉴权