事实上,问题如下:为什么我的循环不正常,为什么(据我所知)每个线程都使用每个 i ,以及如何修复它?好吧,为什么错误,数组大小= 10
private int i =0 ;
这里方法
for(;i<numbersCategory.size();i++) {
new Thread(new Runnable() {
@Override
public void run() {
System.out.println(i + " ЭТА I");
Call<Partner> partnerCall = api.partnerId(Integer.parseInt(numbersCategory.get(i)));
partnerCall.enqueue(new Callback<Partner>() {
@Override
public void onResponse(Call<Partner> call, Response<Partner> response) {
System.out.println(" Загрузил");
partnerArrayList.add(response.body());
System.out.println();
System.out.println(response.body().getTitle());
System.out.println(partnerArrayList.size());
}
@Override
public void onFailure(Call<Partner> call, Throwable throwable) {
System.out.println(throwable);
}
});
}
}).start();
}
结论:
答:因为我很笨,没想到.start()。当循环已经通过一个分支时定位。如果你想让一切都变得美丽,你需要这样做:
最后你需要 run(),而不是 start()。我会把答案留给后人。关闭