servlet是单例还是多例的,怎么控制线程安全的

dagengchun 2014-11-30 11:59:24
servlet是单例还是多例的?
如果是单例的是怎么控制线程安全的?
...全文
14186 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
sj15955847680 2017-05-30
  • 打赏
  • 举报
回复
引用 6 楼 hz531924627 的回复:
[quote=引用 5 楼 zhangjihao 的回复:] 1、servlet是单例的,严格地说是一个ServletMapping对应一个单例实例(如果一个Servlet被映射了两个URL地址,会生成两个实例)。早期的CGI模式是原型式的,例如同时并发2000次请求一个Servlet,如果不是单例的,内存瞬间要创建2000个对象,同时为了线程安全还得阻塞对方线程,其性能非常之差。 2、要维护Servlet线程安全有很多办法,通常是使用同步块(或方法)来保护共享数据,其次可以volatile、Lock一些锁机制,还可以使用ThreadLocal来打通安全通道,另外还有原子操作也是用来保护数据安全,有非常多的选择。以笔者编程经验来看,Servlet需要考虑数据安全的应用场景不到千分之一。
这个回答好气人啊 哈哈[/quote]为什么气人 ,不对吗?那地方不对
jaksdklaskdfkl 2016-12-21
  • 打赏
  • 举报
回复
引用 5 楼 zhangjihao 的回复:
1、servlet是单例的,严格地说是一个ServletMapping对应一个单例实例(如果一个Servlet被映射了两个URL地址,会生成两个实例)。早期的CGI模式是原型式的,例如同时并发2000次请求一个Servlet,如果不是单例的,内存瞬间要创建2000个对象,同时为了线程安全还得阻塞对方线程,其性能非常之差。 2、要维护Servlet线程安全有很多办法,通常是使用同步块(或方法)来保护共享数据,其次可以volatile、Lock一些锁机制,还可以使用ThreadLocal来打通安全通道,另外还有原子操作也是用来保护数据安全,有非常多的选择。以笔者编程经验来看,Servlet需要考虑数据安全的应用场景不到千分之一。
这个回答好气人啊 哈哈
dagengchun 2014-11-30
  • 打赏
  • 举报
回复
求求你们给我实际答案好吗,, 这是一道面试题,两个项目经理问我了,我叉
筑基小修士 2014-11-30
  • 打赏
  • 举报
回复
所以 一般 servlet中 才 不写 字段的 所以 在 处理事务时才要加锁,所以 struts2才 比较爽
dagengchun 2014-11-30
  • 打赏
  • 举报
回复
那么这多人访问一个网站,而servlet实例只有一个,请问在吗控制线程安全
猿人林克 2014-11-30
  • 打赏
  • 举报
回复
Servlet并不是单例,只是容器只实例化它一次,表现出来单例的效果而已。 但需要注意的是,Servlet是web容器来控制实例化的,并不是你自己用你编写的代码来实例化,即使你自己编写代码实例化你的servlet,Web服务器也不会直接调用你的实例化的Servlet对象的。
howsun_zh 2014-11-30
  • 打赏
  • 举报
回复
1、servlet是单例的,严格地说是一个ServletMapping对应一个单例实例(如果一个Servlet被映射了两个URL地址,会生成两个实例)。早期的CGI模式是原型式的,例如同时并发2000次请求一个Servlet,如果不是单例的,内存瞬间要创建2000个对象,同时为了线程安全还得阻塞对方线程,其性能非常之差。 2、要维护Servlet线程安全有很多办法,通常是使用同步块(或方法)来保护共享数据,其次可以volatile、Lock一些锁机制,还可以使用ThreadLocal来打通安全通道,另外还有原子操作也是用来保护数据安全,有非常多的选择。以笔者编程经验来看,Servlet需要考虑数据安全的应用场景不到千分之一。

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧