代码之家  ›  专栏  ›  技术社区  ›  danny.lesnik

来自servlet的静态方法

  •  3
  • danny.lesnik  · 技术社区  · 15 年前

    我正在编写我的Servlet应用程序,并希望使用下面的静态方法,它将x和y相乘。

    public class Helper {
        private Helper() {
            throw new AssertError();
        }
    
        public static int mutltiply(int a, int b) {
            int c = a*b;
            return c;
        }
     }
    

    我知道servlet是多线程环境。从servlet调用这样的方法安全吗?

    我应该向这个函数添加synchronize属性吗?我的音乐会是关于多线程下c变量的值。

    我是Java新手,所以这些信息会非常有用。

    4 回复  |  直到 15 年前
        1
  •  4
  •   Colin Hebert    15 年前

    只要不使用静态字段,我就看不出问题。但是如果您真的要创建一个乘法方法,可能需要重新考虑应用程序的某些部分。

        2
  •  7
  •   Steve B.    15 年前

    静态方法是无状态的。因为它没有引用方法范围之外的任何东西,所以在任何地方都是安全的。

    也就是说,考虑将这样的通用功能拆分为另一个类。课堂上最好遵循 single responsibility principle ,您将能够在其他servlet中使用静态方法。

        3
  •  4
  •   Darin Dimitrov    15 年前

    c 是局部变量,因此此方法是可重入的且线程安全的。您可以从多个线程安全地使用它。

        4
  •  2
  •   Skip Head    15 年前

    是的,该方法是线程安全的。只要您只使用局部变量,您将是线程安全的。