/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.apache.commons.math3.stat.descriptive;

import org.apache.commons.math3.exception.DimensionMismatchException;
import org.apache.commons.math3.exception.MathIllegalStateException;
import org.apache.commons.math3.linear.RealMatrix;

Implementation of MultivariateSummaryStatistics that is safe to use in a multithreaded environment. Multiple threads can safely operate on a single instance without causing runtime exceptions due to race conditions. In effect, this implementation makes modification and access methods atomic operations for a single instance. That is to say, as one thread is computing a statistic from the instance, no other thread can modify the instance nor compute another statistic.
Since:1.2
/** * Implementation of * {@link org.apache.commons.math3.stat.descriptive.MultivariateSummaryStatistics} that * is safe to use in a multithreaded environment. Multiple threads can safely * operate on a single instance without causing runtime exceptions due to race * conditions. In effect, this implementation makes modification and access * methods atomic operations for a single instance. That is to say, as one * thread is computing a statistic from the instance, no other thread can modify * the instance nor compute another statistic. * @since 1.2 */
public class SynchronizedMultivariateSummaryStatistics extends MultivariateSummaryStatistics {
Serialization UID
/** Serialization UID */
private static final long serialVersionUID = 7099834153347155363L;
Construct a SynchronizedMultivariateSummaryStatistics instance
Params:
  • k – dimension of the data
  • isCovarianceBiasCorrected – if true, the unbiased sample covariance is computed, otherwise the biased population covariance is computed
/** * Construct a SynchronizedMultivariateSummaryStatistics instance * @param k dimension of the data * @param isCovarianceBiasCorrected if true, the unbiased sample * covariance is computed, otherwise the biased population covariance * is computed */
public SynchronizedMultivariateSummaryStatistics(int k, boolean isCovarianceBiasCorrected) { super(k, isCovarianceBiasCorrected); }
{@inheritDoc}
/** * {@inheritDoc} */
@Override public synchronized void addValue(double[] value) throws DimensionMismatchException { super.addValue(value); }
{@inheritDoc}
/** * {@inheritDoc} */
@Override public synchronized int getDimension() { return super.getDimension(); }
{@inheritDoc}
/** * {@inheritDoc} */
@Override public synchronized long getN() { return super.getN(); }
{@inheritDoc}
/** * {@inheritDoc} */
@Override public synchronized double[] getSum() { return super.getSum(); }
{@inheritDoc}
/** * {@inheritDoc} */
@Override public synchronized double[] getSumSq() { return super.getSumSq(); }
{@inheritDoc}
/** * {@inheritDoc} */
@Override public synchronized double[] getSumLog() { return super.getSumLog(); }
{@inheritDoc}
/** * {@inheritDoc} */
@Override public synchronized double[] getMean() { return super.getMean(); }
{@inheritDoc}
/** * {@inheritDoc} */
@Override public synchronized double[] getStandardDeviation() { return super.getStandardDeviation(); }
{@inheritDoc}
/** * {@inheritDoc} */
@Override public synchronized RealMatrix getCovariance() { return super.getCovariance(); }
{@inheritDoc}
/** * {@inheritDoc} */
@Override public synchronized double[] getMax() { return super.getMax(); }
{@inheritDoc}
/** * {@inheritDoc} */
@Override public synchronized double[] getMin() { return super.getMin(); }
{@inheritDoc}
/** * {@inheritDoc} */
@Override public synchronized double[] getGeometricMean() { return super.getGeometricMean(); }
{@inheritDoc}
/** * {@inheritDoc} */
@Override public synchronized String toString() { return super.toString(); }
{@inheritDoc}
/** * {@inheritDoc} */
@Override public synchronized void clear() { super.clear(); }
{@inheritDoc}
/** * {@inheritDoc} */
@Override public synchronized boolean equals(Object object) { return super.equals(object); }
{@inheritDoc}
/** * {@inheritDoc} */
@Override public synchronized int hashCode() { return super.hashCode(); }
{@inheritDoc}
/** * {@inheritDoc} */
@Override public synchronized StorelessUnivariateStatistic[] getSumImpl() { return super.getSumImpl(); }
{@inheritDoc}
/** * {@inheritDoc} */
@Override public synchronized void setSumImpl(StorelessUnivariateStatistic[] sumImpl) throws DimensionMismatchException, MathIllegalStateException { super.setSumImpl(sumImpl); }
{@inheritDoc}
/** * {@inheritDoc} */
@Override public synchronized StorelessUnivariateStatistic[] getSumsqImpl() { return super.getSumsqImpl(); }
{@inheritDoc}
/** * {@inheritDoc} */
@Override public synchronized void setSumsqImpl(StorelessUnivariateStatistic[] sumsqImpl) throws DimensionMismatchException, MathIllegalStateException { super.setSumsqImpl(sumsqImpl); }
{@inheritDoc}
/** * {@inheritDoc} */
@Override public synchronized StorelessUnivariateStatistic[] getMinImpl() { return super.getMinImpl(); }
{@inheritDoc}
/** * {@inheritDoc} */
@Override public synchronized void setMinImpl(StorelessUnivariateStatistic[] minImpl) throws DimensionMismatchException, MathIllegalStateException { super.setMinImpl(minImpl); }
{@inheritDoc}
/** * {@inheritDoc} */
@Override public synchronized StorelessUnivariateStatistic[] getMaxImpl() { return super.getMaxImpl(); }
{@inheritDoc}
/** * {@inheritDoc} */
@Override public synchronized void setMaxImpl(StorelessUnivariateStatistic[] maxImpl) throws DimensionMismatchException, MathIllegalStateException{ super.setMaxImpl(maxImpl); }
{@inheritDoc}
/** * {@inheritDoc} */
@Override public synchronized StorelessUnivariateStatistic[] getSumLogImpl() { return super.getSumLogImpl(); }
{@inheritDoc}
/** * {@inheritDoc} */
@Override public synchronized void setSumLogImpl(StorelessUnivariateStatistic[] sumLogImpl) throws DimensionMismatchException, MathIllegalStateException { super.setSumLogImpl(sumLogImpl); }
{@inheritDoc}
/** * {@inheritDoc} */
@Override public synchronized StorelessUnivariateStatistic[] getGeoMeanImpl() { return super.getGeoMeanImpl(); }
{@inheritDoc}
/** * {@inheritDoc} */
@Override public synchronized void setGeoMeanImpl(StorelessUnivariateStatistic[] geoMeanImpl) throws DimensionMismatchException, MathIllegalStateException { super.setGeoMeanImpl(geoMeanImpl); }
{@inheritDoc}
/** * {@inheritDoc} */
@Override public synchronized StorelessUnivariateStatistic[] getMeanImpl() { return super.getMeanImpl(); }
{@inheritDoc}
/** * {@inheritDoc} */
@Override public synchronized void setMeanImpl(StorelessUnivariateStatistic[] meanImpl) throws DimensionMismatchException, MathIllegalStateException { super.setMeanImpl(meanImpl); } }