Java Servlet-自定义类必须是线程安全的?
如果我有一个自定义类,里面有一个静态变量,我想这个静态变量将在所有请求线程之间共享,对吗?所以我想这是我的职责,控制对变量的访问,以获得所需的行为 在下面的示例中,静态变量值是否将在所有请求线程之间共享? 我能保证来自Java Servlet-自定义类必须是线程安全的?,java,multithreading,servlets,Java,Multithreading,Servlets,如果我有一个自定义类,里面有一个静态变量,我想这个静态变量将在所有请求线程之间共享,对吗?所以我想这是我的职责,控制对变量的访问,以获得所需的行为 在下面的示例中,静态变量值是否将在所有请求线程之间共享? 我能保证来自myCustom.getValue()的结果始终为零吗?我相信没有 你说得对。static字段属于类,而不是实例。如果任何其他线程(或您当前的线程)正在调用(或已经调用)add或dec,它们在该静态字段上运行,那么您将无法保证返回0的初始值 public class MyServl
myCustom.getValue()
的结果始终为零吗?我相信没有
你说得对。
static
字段属于类,而不是实例。如果任何其他线程(或您当前的线程)正在调用(或已经调用)add
或dec
,它们在该静态
字段上运行,那么您将无法保证返回0
的初始值
public class MyServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
CustomClass myCustom = new CustomClass();
myCustom.add();
myCustom.dec();
myCustom.getValue(); //
}
}
public class CustomClass {
private static int value = 0;
public void add(){
this.value ++;
}
private void dec(){
this.value --;
}
private int getValue(){
return this.value;
}
}