title: Thread safety and generics in a static class
body: <p>I have an Util class that i use for Stats computation. An Exponential moving average is calculated among multiple threads. Also this threads pass differents values some times double and others long. I want to make generics and also be sure that when applying <strong>synchronized</strong> to the method's signature.</p>
  
  <pre><code>    public class StatUtils {
  
      public static class WMA {
          // MMA
      }
      public static class EMA {
  
          /** The alpha. */
          private static double staticAlpha = 0.9;
  
          /** The old value. */
          private static double staticOldValue = 1.0;
  
          /**
           * Compute.
           *
           * @param pValue the value
           * @return the double
           */
          public static synchronized double compute(double pValue) {
              if (staticOldValue == 0.0) {
                  staticOldValue = pValue;
                  return pValue;
              }
              double lValue = staticOldValue + staticAlpha * (pValue - staticOldValue);
              staticOldValue = lValue;
              return lValue;
          }
      }
  }
  </code></pre>
  
  <p>Is the compute method thread safe ? If Yes is that possible to make this static class generic ?</p>