Java POST方法之外的Create方法是servlet

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

嗨,我在servlet中创建了一个私有方法。 将从post方法调用该方法。我的问题是,它会是线程安全的吗,因为它会被许多用户通过ajax调用

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()中执行的操作。你想做什么/阻止什么?