小编Nit*_*lra的帖子

累加器是线程安全的吗?

我正在使用累加器,想知道这些对象是否是线程安全的?

accumInt是的一种类型AccumulatorParam<Integer>

// Current value accumInt -> 6
AccumulatorThread t1 = new AccumulatorThread();
t1.setAccum(accumInt); 
t1.setValueToAdd(5);

AccumulatorThread t2 = new AccumulatorThread();
t2.setAccum(accumInt);
t2.setValueToAdd(7);

new Thread(t1).start();
new Thread(t2).start();

System.out.println(accumInt.value()); // 11 or 13 or 18
Run Code Online (Sandbox Code Playgroud)

AccumlatorThread 类:

class AccumulatorThread implements Runnable {
    Accumulator<Integer> accum;
    Integer              valueToAdd;

    public Integer getValueToAdd() {
        return valueToAdd;
    }


    public void setValueToAdd(Integer valueToAdd) {
        this.valueToAdd = valueToAdd;
    }

    public Accumulator<Integer> getAccum() {
        return accum;
    }


    public void setAccum(Accumulator<Integer> accum) {
        this.accum = accum;
    }

    public …
Run Code Online (Sandbox Code Playgroud)

java multithreading thread-safety accumulator apache-spark

2
推荐指数
2
解决办法
1062
查看次数