synchronized 方法控制对类成员变量的访问,实现同步的机制 。
<%! int count=0; //被客户共享的count
synchronized void setCount() //synchronized修饰的方法
{ count++; }
%>
<%
setCount();
out.println("您是第"+count+"个访问本站的客户");
%>
synchronized void setCount() //synchronized修饰的方法
{ count++; }
%>
<%
setCount();
out.println("您是第"+count+"个访问本站的客户");
%>
如果两个人同时访问该页面:
- 不使用synchronized,则可能两人同时读取成员变量count的值,都是0,两人分别执行setCount方法,执行完后,count的值还是1而不是2。
- 使用synchronized后,setCount方法为同步方法,同一时间只能由一个用户访问,控制对成员变量count的访问。保证程序的正确性。