我正在使用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响应。
现在我的问题是,是否有可能在程序线程中进入竞争状态,并相互交换响应消息。
答案 0 :(得分:2)
你关闭了。 servlet容器使用线程池,它为每个请求从池中分配一个线程,并在响应完成后将线程返回池中。您不必担心线程混淆,servlet容器正在为您管理。