我有一个字符串,我正在对其进行解析并将其存储到JsonArray,然后对其进行迭代。有一个竞争条件,我的解析器未完成,控件继续前进。我希望这先完成然后继续。
我试图等待并通知。它不起作用。
Response res = run(el);
JsonParser parser = new JsonParser();
JsonElement jsonTree = parser.parse(res.body().string());
try {
wait();
} catch(InterruptedException e) {
e.printStackTrace();
}
System.out.println("jsontree : "+ jsonTree);
JsonArray array=jsonTree.getAsJsonArray();
notifyAll();
if(jsonTree.isJsonArray()) {
System.out.println("I am JSONARRAY");
}
for(JsonElement element: array) {
count++;
System.out.println("count "+ count);
}
现在jsonTree为空,它看起来像这样:
[]
。我希望jsonTree具有对象。有什么建议? 最佳答案
Java默认是逐行执行的,即默认情况下本质上是同步的。这意味着解析器一旦完成,就只会移动到下一行。您将不需要任何异步方式来实现它。只需检查您的响应obj和解析器的正确性即可。