Java POST方法之外的Create方法是servlet
嗨,我在servlet中创建了一个私有方法。 将从post方法调用该方法。我的问题是,它会是线程安全的吗,因为它会被许多用户通过ajax调用Java POST方法之外的Create方法是servlet,java,ajax,servlets,Java,Ajax,Servlets,嗨,我在servlet中创建了一个私有方法。 将从post方法调用该方法。我的问题是,它会是线程安全的吗,因为它会被许多用户通过ajax调用 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { callPrivateMethod(); } private static void
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
callPrivateMethod();
}
private static void callPrivateMethod(){
}
只要callPrivateMethod()是线程安全的,也就是说,它不使用类成员变量,那么您就不会有问题。不,您的私有方法不会是线程安全的,因为
doPost
在servlet中不是线程安全的。它是静态方法,在您的情况下,不可变对象作为参数(无参数)是线程安全的servlet应该是无状态的。但是,如果需要使用类成员或任何其他线程不安全的元素,则始终可以使用“同步”语句。servlet在加载时仅实例化一次。如果要使调用callPrivateMethod()线程安全,可以将其放入同步块中
private Object mutex = new Object();
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
synchronized (mutex){
callPrivateMethod();
}
}
private static void callPrivateMethod(){
}
显示的代码将由多个线程并发执行。它是否是线程安全的取决于您将在callPrivateMethod()中执行的操作。你想做什么/阻止什么?