大家好,小弟最近遇到个问题,百思不得其解,所以就让大家指点指点,小弟先谢谢了!
  问题是:假如有这样的一段代码:
          public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String method = request.getParameter("method");
try{
Thread.sleep(5000);
}
catch(Exception e){
System.out.println(e.getMessage());
}
        if(method == 0){
         .................    
        }
        if(method == 1){
        .................    
        }
        if(method == 2){
         .................    
        }
       ......................
}
我的理解是:
    假如有多个线程执行这段代码的时候,当第一个线程来访问这个方法时会在这个方法的堆栈中定义好这个method变量,那么第二个线程来访问这个方法时“这个method变量会被重新定义,也就是说会被重新赋值”,那么之前那个线程在执行下面的if语句时的method的值就会有可能变成第二个线程访问时赋的值,也就是说会出现线程安全问题;但是我开了几个浏览器,试了很多次都没发生那种情况(把String method 放在doGet方法外面声明出现了那中情况)
    请大家分析分析我的理解有错没?非常感谢!