多线程如何在Web环境中工作

时间:2014-11-29 13:18:20

标签: java multithreading spring

我正在使用Spring和Core Java开发一个Web应用程序。每次请求来自客户端并由Spring控制器处理。

@Controller("action")
public class RequestHandler{

@Autowired
private IndialHandler indial;

    @Request("/indialCall")
    public void processWork(HttpServletRequest request){

      String did = request.getParameter("did");
      String resp = indial.dialCall(did);

    }
    }

    public class IndialHandler{

    public String dialCall(String did){
       return checkVoiceCall(did);
    }

    public String checkVoiceCall(String did){

    //here i have a db call, which returns either 1 or 2.

    return service.dbCall(did);

    }


    }

我对这个程序的理解是,因为每个新请求在JVM中创建一个新的线程,并且每个线程都有其内存上下文。这意味着每个线程都有自己的did和resp变量,没有两个线程可以共享resp变量。这意味着如果我有1,2,... n个不同的线程,并假设每个线程都生成1,2,...... n响应。

现在我的问题是,是否有可能在程序线程中进入竞争状态,并相互交换响应消息。

1 个答案:

答案 0 :(得分:2)

你关闭了。 servlet容器使用线程池,它为每个请求从池中分配一个线程,并在响应完成后将线程返回池中。您不必担心线程混淆,servlet容器正在为您管理。