日期:2014-05-20  浏览次数:20637 次

一个java多线程问题
我只记得大致的代码:
public TestServlet extends HttpServlet{
  private int a=1;
  doGet(request,response){
  a=a+1;
  PrintWrite out=response.getWriter();
  out.print(a);
  }
}

问:如果有A,B两人访问这个Servlet,会得到几种结果?并解析。

------解决方案--------------------
就是一个简单的多线程的问题啊。

如果A先跑完,B再跑完。那么得到的是第一种结果:2,2
如果有一个先执行:a=a+1; 另外一个再执行这句时,得到提2,3

------解决方案--------------------
Servlet是单例的,所以private int a=1 会被共享。

A和B两个人的HTML页面上的结果应该只有2种:
1)A 2 ;B 3
2)A 2 ;B 2

绝大多数情况下是1;
极其极其极其少的情况下是2。