zoukankan      html  css  js  c++  java
  • SSH之小问题解惑

    (注:以下版本指的是spring3+hibernate3+struts2)

    1,web开发中,servlet对象是否线程安全?

      当一个http请求到来时,web容器的调度线程(Dispach Thread)会从已经初始化的线程池中分配一个工作线程(Worker Thread)来负责处理该请求,该工作线程会调用对应的servlet对象的service方法;如果又一个请求到来,web容器会从线程池中选择另一个线程来服务新的请求。web容器不关心请求的是否是同一个servlet实例。所以,多个请求可能调用同一个Servlet对象,servlet的service方法会在多线程环境中并发执行,若servlet中有内部实例变量,则会产生线程安全问题。

    2,为什么声明struts的action时,除了@Controller还要@Scope("prototype")?

      为了线程安全。spring管理的bean在不指定scope情况下,默认为single,也就是单例,众所周知,web服务器中servlet就是以单实例多线程的方式运行,这样会有线程安全隐患;若指定为prototype,每次请求到来,spring都会创建一个新的action交给struts来使用,避免了线程安全问题。

          可以结合StackOverflow上的一个问题思考下:http://stackoverflow.com/questions/7621920/scopeprototype-bean-scope-not-creating-new-bean

    还有这篇文章,理解有状态和无状态:http://peterwei.iteye.com/blog/960532

    3,(将持续更新)

  • 相关阅读:
    跨域访问方法列举 jsonp 和 客户端
    session 垃圾回收机制
    php 根据数据权重,得分或者持有数量等进行均衡分配给定数量分配方法
    进程和线程比较
    redis 过期策略分析
    redis 基础知识详解
    tcp/ip 协议
    ip 协议详解
    php redis 分布式类
    nginx打开目录游览功能
  • 原文地址:https://www.cnblogs.com/jianzhi/p/3471291.html
Copyright © 2011-2022 走看看