一括データ実行インタフェース完了進捗表示AtomicIntegerを実現

2690 ワード

最近、ロットを作っていますが、どのようにロットの進度を見ることができるのか、計算方法を書きました.
1、この中で主にAtomicIntegerを使っています
Java同時機構には主に3つの特性があり,原子性,可視性,秩序性を考慮する必要があることを知っている.synchronizedキーワードは可視性と秩序性を保証するが原子性を保証できない.このAtomicIntegerの役割は原子性を保証するためです.
import java.util.concurrent.atomic.AtomicInteger;

public interface ICount {

    AtomicInteger shopGoodsCount = new AtomicInteger(0);
    AtomicInteger shopGoodsSum = new AtomicInteger(0);
    AtomicInteger shopNotCheckGoodsCount = new AtomicInteger(0);
    AtomicInteger shopGoodsErrorCount = new AtomicInteger(0);

    AtomicInteger proBrandsCount = new AtomicInteger(0);
    AtomicInteger proBrandsSum = new AtomicInteger(0);
    AtomicInteger proBrandsNotCheckCount = new AtomicInteger(0);
    AtomicInteger proBrandsErrorCount = new AtomicInteger(0);

    AtomicInteger proCategorysCount = new AtomicInteger(0);
    AtomicInteger proCategorysSum = new AtomicInteger(0);
    AtomicInteger proCategorysErrorCount = new AtomicInteger(0);

    AtomicInteger elseCount = new AtomicInteger(0);
    AtomicInteger elseErrorCount = new AtomicInteger(0);

    ExceptionInner exception = new ExceptionInner();

    class ExceptionInner{
        Throwable exception;
        String message;

        public Throwable getException() {
            return exception;
        }

        public void setException(Throwable exception) {
            this.exception = exception;
        }

        public String getMessage() {
            return message;
        }

        public void setMessage(String message) {
            this.message = message;
        }
    }
2、 
ICount.shopGoodsCount.set(0);
        ICount.shopGoodsSum.set(0);
        ICount.shopGoodsErrorCount.set(0);
        ICount.shopNotCheckGoodsCount.set(0);
        List allGoods = GoodsService.findAllGoods();
        ICount.shopGoodsSum.set(allProGoods.size());


ループまたはerrorでは、次のように設定されています.
ICount.shopNotCheckGoodsCount.getAndIncrement();

ICount.shopGoodsErrorCount.getAndIncrement();

プロセスのインタフェースはこう書くことができます
@RequestMapping(value = "/api/viewProgress", method = RequestMethod.GET)
    @ResponseBody
    public Map viewProgress() {
        TreeMap result = new TreeMap<>();
        // 
        result.put("goodsTotal",ICount.shopGoodsSum.get());
        result.put("goodsError",ICount.shopGoodsErrorCount.get());
        result.put("goodsNotCheckCount",ICount.shopNotCheckGoodsCount.get());
        result.put("goodsAlreadSend",ICount.shopGoodsCount.get());
       

    }