DoubleAccumulator api詳解

今天學習DoubleAccumulator類,該類是JUC原子包中的類,通過單元測試代碼把所有public api方法跑了一遍,大致瞭解了底層實現

package test.java.util.concurrent.atomic;


import java.util.concurrent.atomic.DoubleAccumulator;
import java.util.function.DoubleBinaryOperator;

import org.junit.Test;

/**
 * DoubleAccumulator的測試類
 *DoubleAccumulator的測試類 爲double函數式變成的計算器
 * @author zqw
 * @date 2020-06-20 23:14:35
 */
public class DoubleAccumulatorTest {
       /**
       *
        * void
        * @Param 初始化double計算器
        * @author zhqwm
        * @date 2020/6/20 23:39
        */
        @Test
        public void testConstruct0()throws Exception{
                DoubleBinaryOperator doubleBinaryOperator=new DoubleBinaryOperator() {
                        @Override
                        public double applyAsDouble(double left, double right) {
                                return left-right;
                        }
                };
                DoubleAccumulator testObj=new DoubleAccumulator(doubleBinaryOperator,321);
                System.out.println(testObj.get());
        }
        /**
         *
         * void
         * @Param 根據operator函數規則計算
         * @author zhqwm
         * @date 2020/6/20 23:39
         */
        @Test
        public void testAccumulate(){
                DoubleBinaryOperator doubleBinaryOperator=new DoubleBinaryOperator() {
                        @Override
                        public double applyAsDouble(double left, double right) {
                                return left-right;
                        }
                };
                DoubleAccumulator testObj=new DoubleAccumulator(doubleBinaryOperator,321);
                testObj.accumulate(3);
                System.out.println(testObj.get());
        }
        /**
         * void
         * @Param 獲取double值
         * @author zhqwm
         * @date 2020/6/20 23:39
         */
        @Test
        public void testGet(){
                DoubleBinaryOperator doubleBinaryOperator=new DoubleBinaryOperator() {
                        @Override
                        public double applyAsDouble(double left, double right) {
                                return left-right;
                        }
                };
                DoubleAccumulator testObj=new DoubleAccumulator(doubleBinaryOperator,321);
                System.out.println(testObj.get());
        }
        /**
         *計算之後重置回原值
         * @author zhqwm
         * @date 2020/6/20 23:39
         */
        @Test
        public void testReset(){
                DoubleBinaryOperator doubleBinaryOperator=new DoubleBinaryOperator() {
                        @Override
                        public double applyAsDouble(double left, double right) {
                                return left-right;
                        }
                };
                DoubleAccumulator testObj=new DoubleAccumulator(doubleBinaryOperator,321);
                testObj.accumulate(3);
                System.out.println(testObj.get());
                testObj.reset();
                System.out.println(testObj.get());
        }
        /**
         *先獲取當前值然後重置
         * void
         * @author zhqwm
         * @date 2020/6/20 23:39
         */
        @Test
        public void testGetThenReset(){
                DoubleBinaryOperator doubleBinaryOperator=new DoubleBinaryOperator() {
                        @Override
                        public double applyAsDouble(double left, double right) {
                                return left-right;
                        }
                };
                DoubleAccumulator testObj=new DoubleAccumulator(doubleBinaryOperator,321);
                testObj.accumulate(3);
                System.out.println(testObj.getThenReset());
                System.out.println(testObj.get());

        }
        /**
         *
         * void
         * @Param 返回double值
         * @author zhqwm
         * @date 2020/6/20 23:39
         */
        @Test
        public void testToString(){
                DoubleBinaryOperator doubleBinaryOperator=new DoubleBinaryOperator() {
                        @Override
                        public double applyAsDouble(double left, double right) {
                                return left-right;
                        }
                };
                DoubleAccumulator testObj=new DoubleAccumulator(doubleBinaryOperator,321);
                System.out.println(testObj.toString());
        }
        /**
         *返回double值
         * void
         * @Param
         * @author zhqwm
         * @date 2020/6/20 23:39
         */
        @Test
        public void testDoubleValue(){
                DoubleBinaryOperator doubleBinaryOperator=new DoubleBinaryOperator() {
                        @Override
                        public double applyAsDouble(double left, double right) {
                                return left-right;
                        }
                };
                DoubleAccumulator testObj=new DoubleAccumulator(doubleBinaryOperator,321);
                System.out.println(testObj.doubleValue());
        }
        /**
         *返回int值
         * void
         * @Param
         * @author zhqwm
         * @date 2020/6/20 23:39
         */
        @Test
        public void testIntValue(){
                DoubleBinaryOperator doubleBinaryOperator=new DoubleBinaryOperator() {
                        @Override
                        public double applyAsDouble(double left, double right) {
                                return left-right;
                        }
                };
                DoubleAccumulator testObj=new DoubleAccumulator(doubleBinaryOperator,321);
                System.out.println(testObj.intValue());
        }
        /**
         *返回long值
         * void
         * @Param
         * @author zhqwm
         * @date 2020/6/20 23:39
         */
        @Test
        public void testLongValue(){
                DoubleBinaryOperator doubleBinaryOperator=new DoubleBinaryOperator() {
                        @Override
                        public double applyAsDouble(double left, double right) {
                                return left-right;
                        }
                };
                DoubleAccumulator testObj=new DoubleAccumulator(doubleBinaryOperator,321);
                System.out.println(testObj.longValue());
        }
        /**
         *返回float值
         * void
         * @Param
         * @author zhqwm
         * @date 2020/6/20 23:39
         */
        @Test
        public void testFloatValue(){
                DoubleBinaryOperator doubleBinaryOperator=new DoubleBinaryOperator() {
                        @Override
                        public double applyAsDouble(double left, double right) {
                                return left-right;
                        }
                };
                DoubleAccumulator testObj=new DoubleAccumulator(doubleBinaryOperator,321);
                System.out.println(testObj.floatValue());
        }



}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章