Java 语法 synchronized(一个类)
Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。
例子 在一个Servlet里面的get方法
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
synchronized(this){
i++;
try{
Thread.sleep(1000*10);//待机10秒
out.println(" <BODY>");
out.println(i);
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
}catch(Exception e){
e.printStackTrace();
}
}
out.close();
现在我浏览器新建2个窗口,同时AB同时访问 这个Servlet.
假设A先到达,B慢了0.1秒到达
浏览器显示结果为:A窗口十秒钟后显示i=1
B窗口二十秒钟之后显示i=2
整个网站假若采用synchronized,那么一个时刻,只有一个人在里面看着。