我有一个 servlet 代码,它维护其被访问的次数。
在 doGet 方法的某个点,该部分被同步的访问次数的增量完成。
任何人都可以详细说明为什么这样做以及如果在 doGet 方法中没有完成同步会有什么影响。
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
public class FirstAccessed extends HttpServlet{
private Date first;
private int count;
public void init() throws ServletException {
// Enter the time/date when the server calls this servlet and
// initialize counter
first = new Date();
count = 0;
return;
}
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
res.setContentType("text/plain");
PrintWriter out = res.getWriter();
int local_count;
synchronized(this) {
local_count = ++count;
}
out.println("<HTML>");
out.println("<HEAD><TITLE>First Accessed Servlet</TITLE></HEAD>");
out.println("<BODY>");
out.println("This servlet was first loaded by the server at " + first);
out.println("<br>The current time is " + new Date());
out.println("<br>");
out.println("This servlet has been accessed " + local_count + " times.");
out.println("</BODY></HTML>");
}
}