一括データ実行インタフェース完了進捗表示AtomicIntegerを実現
2690 ワード
最近、ロットを作っていますが、どのようにロットの進度を見ることができるのか、計算方法を書きました.
1、この中で主にAtomicIntegerを使っています
Java同時機構には主に3つの特性があり,原子性,可視性,秩序性を考慮する必要があることを知っている.synchronizedキーワードは可視性と秩序性を保証するが原子性を保証できない.このAtomicIntegerの役割は原子性を保証するためです.
ループまたはerrorでは、次のように設定されています.
プロセスのインタフェースはこう書くことができます
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());
}