在线程需要时回调响应

时间:2018-03-17 22:25:24

标签: java android multithreading

现状:
我正在使用Android SDK Version 26 我有ThreadThread内是while循环,增加Integer。增加Integer后,Thread会为X millis休眠。 Class A initialized Class BClass BThreadinitialized开始。 Class B不知道Class A存在。

我的问题:
每次Integer循环迭代时,我都希望将当前Class值回复给另一个while

到目前为止我尝试了什么:
我使用了Callable<Integer>,但在线程结束后响应。 (使用LogSystem.out.println进行了测试。

Class B代码:

public void doSomethingBig(Integer comparedVal){  
    new Thread(new Runnable() {
        @Override
        public void run() {
            Integer val = new Integer(0);
            while(val < comparedVal){
                val += 1;
                // Insert Solution here
                try {
                    Thread.sleep(100);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }).start();
}

Class A代码:

public void init(){  
     B b = new B();
     b.doSomethingBig(new Integer(20));
     // Foreach Tick is made in `Thread` from `Class B`, get the `val` and do something with it. 
}

我需要获取另一个val的{​​{1}}值,其中Class没有任何reference,而Class初始化Class B。 任何建议都会有所帮助,并提前致谢。

1 个答案:

答案 0 :(得分:1)

如果您只想获得整数表示的进度,可以使用AtomicInteger

像这样增加进度计数器:

AtomicInteger val = new AtomicInteger();
int newVal = val.incrementAndGet();

并且,从另一个线程获取此值:

int progress = val.get();