アクセス回数を維持するサーブレットコードがあります。
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>");
}
}