/*
* 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);
}
}