现状:
我正在使用Android SDK Version 26
我有Thread
,Thread
内是while
循环,增加Integer
。增加Integer
后,Thread
会为X millis
休眠。 Class A initialized Class B
和Class B
在Thread
后initialized
开始。 Class B
不知道Class A
存在。
我的问题:
每次Integer
循环迭代时,我都希望将当前Class
值回复给另一个while
。
到目前为止我尝试了什么:
我使用了Callable<Integer>
,但在线程结束后响应。 (使用Log
和System.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
。
任何建议都会有所帮助,并提前致谢。
答案 0 :(得分:1)
如果您只想获得整数表示的进度,可以使用AtomicInteger
像这样增加进度计数器:
AtomicInteger val = new AtomicInteger();
int newVal = val.incrementAndGet();
并且,从另一个线程获取此值:
int progress = val.get();