Regarding thread safety of servlet
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
How do servlets work? Instantiation, session variables and multithreading
servlet是线程安全的吗?例如,如果我打开5个不同的浏览器并向容器中的一个servlet发送请求,它是否仍然是线程安全的,我特别指
您的问题可以归结为:正在从同一对象线程安全的多个线程调用一个方法。答案是:视情况而定。如果您的对象(让它成为servlet)是无状态的,或者只有
另外,每个
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | public class UnsafeServlet implements Servlet { private int counter; public void init(ServletConfig config) throws ServletException { } public void service(ServletRequest request, ServletResponse response) ++counter; } public void destroy() { } } |
由于多个线程可以访问
1 2 3 | synchronized(this) { ++counter; } |
或
1 2 3 4 | private AtomicInteger counter = new AtomicInteger(); //... counter.incrementAndGet(); |
在这种情况下,