我有一段这样的程序
黑点表示bebug断点,这是一个Test对象,他有一个类变量i
当我debug一次Test的时候,程序运行到第3行,结果分别是 0,0,1
然后我再debug一次Test的时候,本以为这个输出应该是1,1,2的,可是结果却还是0,0,1
最初怎么也想不通为什么,所以现在有了这样的想法,当我们debug一次Test的时候,其实他是新建了一个JVM实例,虽说2次debug Test其实他们运行在不同的JVM下,他们类变量i,也在各自JVM的方法区里面,所以互不相干,不知道这个结论是否正确。
现在看一个servlet
我们知道,一般的servlet相当于一个单例,我们假设这个servlet运行在tomcat服务器上,当用户请求一次这个servlet的时候,tomcat会让一个engine从线程池里面去得到一个线程,然后处理用户提来的请求。我们开启
2条请求(线程),第一个请求sort=111,第二条请求sort=222,当我们把第一条请求的
public class Test {
public static int i=0;
public static void main(String[] args) {
● System.out.println(Test.i);
System.out.println(Test.i++);
System.out.println(Test.i);
}
}
黑点表示bebug断点,这是一个Test对象,他有一个类变量i
当我debug一次Test的时候,程序运行到第3行,结果分别是 0,0,1
然后我再debug一次Test的时候,本以为这个输出应该是1,1,2的,可是结果却还是0,0,1
最初怎么也想不通为什么,所以现在有了这样的想法,当我们debug一次Test的时候,其实他是新建了一个JVM实例,虽说2次debug Test其实他们运行在不同的JVM下,他们类变量i,也在各自JVM的方法区里面,所以互不相干,不知道这个结论是否正确。
现在看一个servlet
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
● String sort = request.getParameter("sort");
System.out.println(sort);
}
我们知道,一般的servlet相当于一个单例,我们假设这个servlet运行在tomcat服务器上,当用户请求一次这个servlet的时候,tomcat会让一个engine从线程池里面去得到一个线程,然后处理用户提来的请求。我们开启
2条请求(线程),第一个请求sort=111,第二条请求sort=222,当我们把第一条请求的