问题描述
我不确定使用不同的调度程序从rxJava链读取/写入实例变量的安全性。有一个小例子
public class RxJavaThreadSafety {
private int variable = 0;
// First call
public void doWriting() {
Single.just(255)
.doOnSuccess(
newValue -> variable = newValue
)
.subscribeOn(Schedulers.io())
.subscribe();
}
// Second call
public void doReadingRxChain() {
Single.fromCallable((Callable<Integer>) () -> variable)
.subscribeOn(Schedulers.computation())
.subscribe(
result -> System.out.println(result)
);
}
// Third call
public void doReading() {
System.out.println(variable);
}
}
为简单起见,假设这三个方法一个接一个地调用
我的问题:在io调度程序中设置变量“并在最近从计算调度程序或主线程中读取此变量”是否安全?
我认为这不是线程安全的,但是我希望一些rxJava和并发专家对此进行证明
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)