Home | History | Annotate | Download | only in descriptive
      1 /*
      2  * Licensed to the Apache Software Foundation (ASF) under one or more
      3  * contributor license agreements.  See the NOTICE file distributed with
      4  * this work for additional information regarding copyright ownership.
      5  * The ASF licenses this file to You under the Apache License, Version 2.0
      6  * (the "License"); you may not use this file except in compliance with
      7  * the License.  You may obtain a copy of the License at
      8  *
      9  *      http://www.apache.org/licenses/LICENSE-2.0
     10  *
     11  * Unless required by applicable law or agreed to in writing, software
     12  * distributed under the License is distributed on an "AS IS" BASIS,
     13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     14  * See the License for the specific language governing permissions and
     15  * limitations under the License.
     16  */
     17 package org.apache.commons.math.stat.descriptive;
     18 
     19 import org.apache.commons.math.DimensionMismatchException;
     20 import org.apache.commons.math.linear.RealMatrix;
     21 
     22 /**
     23  * Implementation of
     24  * {@link org.apache.commons.math.stat.descriptive.MultivariateSummaryStatistics} that
     25  * is safe to use in a multithreaded environment.  Multiple threads can safely
     26  * operate on a single instance without causing runtime exceptions due to race
     27  * conditions.  In effect, this implementation makes modification and access
     28  * methods atomic operations for a single instance.  That is to say, as one
     29  * thread is computing a statistic from the instance, no other thread can modify
     30  * the instance nor compute another statistic.
     31  * @since 1.2
     32  * @version $Revision: 811685 $ $Date: 2009-09-05 19:36:48 +0200 (sam. 05 sept. 2009) $
     33  */
     34 public class SynchronizedMultivariateSummaryStatistics
     35   extends MultivariateSummaryStatistics {
     36 
     37     /** Serialization UID */
     38     private static final long serialVersionUID = 7099834153347155363L;
     39 
     40     /**
     41      * Construct a SynchronizedMultivariateSummaryStatistics instance
     42      * @param k dimension of the data
     43      * @param isCovarianceBiasCorrected if true, the unbiased sample
     44      * covariance is computed, otherwise the biased population covariance
     45      * is computed
     46      */
     47     public SynchronizedMultivariateSummaryStatistics(int k, boolean isCovarianceBiasCorrected) {
     48         super(k, isCovarianceBiasCorrected);
     49     }
     50 
     51     /**
     52      * {@inheritDoc}
     53      */
     54     @Override
     55     public synchronized void addValue(double[] value)
     56       throws DimensionMismatchException {
     57       super.addValue(value);
     58     }
     59 
     60     /**
     61      * {@inheritDoc}
     62      */
     63     @Override
     64     public synchronized int getDimension() {
     65         return super.getDimension();
     66     }
     67 
     68     /**
     69      * {@inheritDoc}
     70      */
     71     @Override
     72     public synchronized long getN() {
     73         return super.getN();
     74     }
     75 
     76     /**
     77      * {@inheritDoc}
     78      */
     79     @Override
     80     public synchronized double[] getSum() {
     81         return super.getSum();
     82     }
     83 
     84     /**
     85      * {@inheritDoc}
     86      */
     87     @Override
     88     public synchronized double[] getSumSq() {
     89         return super.getSumSq();
     90     }
     91 
     92     /**
     93      * {@inheritDoc}
     94      */
     95     @Override
     96     public synchronized double[] getSumLog() {
     97         return super.getSumLog();
     98     }
     99 
    100     /**
    101      * {@inheritDoc}
    102      */
    103     @Override
    104     public synchronized double[] getMean() {
    105         return super.getMean();
    106     }
    107 
    108     /**
    109      * {@inheritDoc}
    110      */
    111     @Override
    112     public synchronized double[] getStandardDeviation() {
    113         return super.getStandardDeviation();
    114     }
    115 
    116     /**
    117      * {@inheritDoc}
    118      */
    119     @Override
    120     public synchronized RealMatrix getCovariance() {
    121         return super.getCovariance();
    122     }
    123 
    124     /**
    125      * {@inheritDoc}
    126      */
    127     @Override
    128     public synchronized double[] getMax() {
    129         return super.getMax();
    130     }
    131 
    132     /**
    133      * {@inheritDoc}
    134      */
    135     @Override
    136     public synchronized double[] getMin() {
    137         return super.getMin();
    138     }
    139 
    140     /**
    141      * {@inheritDoc}
    142      */
    143     @Override
    144     public synchronized double[] getGeometricMean() {
    145         return super.getGeometricMean();
    146     }
    147 
    148     /**
    149      * {@inheritDoc}
    150      */
    151     @Override
    152     public synchronized String toString() {
    153         return super.toString();
    154     }
    155 
    156     /**
    157      * {@inheritDoc}
    158      */
    159     @Override
    160     public synchronized void clear() {
    161         super.clear();
    162     }
    163 
    164     /**
    165      * {@inheritDoc}
    166      */
    167     @Override
    168     public synchronized boolean equals(Object object) {
    169         return super.equals(object);
    170     }
    171 
    172     /**
    173      * {@inheritDoc}
    174      */
    175     @Override
    176     public synchronized int hashCode() {
    177         return super.hashCode();
    178     }
    179 
    180     /**
    181      * {@inheritDoc}
    182      */
    183     @Override
    184     public synchronized StorelessUnivariateStatistic[] getSumImpl() {
    185         return super.getSumImpl();
    186     }
    187 
    188     /**
    189      * {@inheritDoc}
    190      */
    191     @Override
    192     public synchronized void setSumImpl(StorelessUnivariateStatistic[] sumImpl)
    193       throws DimensionMismatchException {
    194         super.setSumImpl(sumImpl);
    195     }
    196 
    197     /**
    198      * {@inheritDoc}
    199      */
    200     @Override
    201     public synchronized StorelessUnivariateStatistic[] getSumsqImpl() {
    202         return super.getSumsqImpl();
    203     }
    204 
    205     /**
    206      * {@inheritDoc}
    207      */
    208     @Override
    209     public synchronized void setSumsqImpl(StorelessUnivariateStatistic[] sumsqImpl)
    210       throws DimensionMismatchException {
    211         super.setSumsqImpl(sumsqImpl);
    212     }
    213 
    214     /**
    215      * {@inheritDoc}
    216      */
    217     @Override
    218     public synchronized StorelessUnivariateStatistic[] getMinImpl() {
    219         return super.getMinImpl();
    220     }
    221 
    222     /**
    223      * {@inheritDoc}
    224      */
    225     @Override
    226     public synchronized void setMinImpl(StorelessUnivariateStatistic[] minImpl)
    227       throws DimensionMismatchException {
    228         super.setMinImpl(minImpl);
    229     }
    230 
    231     /**
    232      * {@inheritDoc}
    233      */
    234     @Override
    235     public synchronized StorelessUnivariateStatistic[] getMaxImpl() {
    236         return super.getMaxImpl();
    237     }
    238 
    239     /**
    240      * {@inheritDoc}
    241      */
    242     @Override
    243     public synchronized void setMaxImpl(StorelessUnivariateStatistic[] maxImpl)
    244       throws DimensionMismatchException {
    245         super.setMaxImpl(maxImpl);
    246     }
    247 
    248     /**
    249      * {@inheritDoc}
    250      */
    251     @Override
    252     public synchronized StorelessUnivariateStatistic[] getSumLogImpl() {
    253         return super.getSumLogImpl();
    254     }
    255 
    256     /**
    257      * {@inheritDoc}
    258      */
    259     @Override
    260     public synchronized void setSumLogImpl(StorelessUnivariateStatistic[] sumLogImpl)
    261       throws DimensionMismatchException {
    262         super.setSumLogImpl(sumLogImpl);
    263     }
    264 
    265     /**
    266      * {@inheritDoc}
    267      */
    268     @Override
    269     public synchronized StorelessUnivariateStatistic[] getGeoMeanImpl() {
    270         return super.getGeoMeanImpl();
    271     }
    272 
    273     /**
    274      * {@inheritDoc}
    275      */
    276     @Override
    277     public synchronized void setGeoMeanImpl(StorelessUnivariateStatistic[] geoMeanImpl)
    278       throws DimensionMismatchException {
    279         super.setGeoMeanImpl(geoMeanImpl);
    280     }
    281 
    282     /**
    283      * {@inheritDoc}
    284      */
    285     @Override
    286     public synchronized StorelessUnivariateStatistic[] getMeanImpl() {
    287         return super.getMeanImpl();
    288     }
    289 
    290     /**
    291      * {@inheritDoc}
    292      */
    293     @Override
    294     public synchronized void setMeanImpl(StorelessUnivariateStatistic[] meanImpl)
    295       throws DimensionMismatchException {
    296         super.setMeanImpl(meanImpl);
    297     }
    298 
    299 }
    300