【发布时间】:2016-06-18 15:48:15
【问题描述】:
我一直在使用线程向链接发送 GET 请求(一切都很好)。但是,我需要它异步运行,所以我创建了一个新线程并运行它。问题是我需要它在线程完成执行后返回值returnVar[0]。我曾尝试使用!thread.isActive 进行while 循环,但当然,方法体需要一个return 语句。我已经尝试过您即将看到的CountdownLatches,但他们暂停了我不想要的主线程。任何想法都非常感谢。
代码:
public String getUUID(String username) {
final String[] returnVar = {"ERROR"};
final CountDownLatch latch = new CountDownLatch(1);
Thread thread = new Thread(() -> {
final String[] response = {"ERROR"};
final JSONObject[] obj = new JSONObject[1];
response[0] = ConnectionsManager.sendGet("https://api.mojang.com/users/profiles/minecraft/" + username);
try {
obj[0] = (JSONObject) new JSONParser().parse(response[0]);
returnVar[0] = (String) obj[0].get("id");
} catch (ParseException e) {
e.printStackTrace();
}
latch.countDown();
});
thread.start();
try {
latch.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
return returnVar[0];
}
【问题讨论】:
标签: java multithreading