我一直在使用線程向鏈接發送GET請求(都是好的)。但是,我需要它異步運行,所以我創建了一個新線程並運行它。問題是我需要它在線程完成執行後返回值returnVar[0]
。我已經嘗試while循環與!thread.isActive
,但當然,方法主體需要一個返回語句。我已經嘗試過CountdownLatche
這是你將要看到的,但是他們暫停了我不想要的主線程。任何想法,不勝感激。異步運行任務並在線程激活後返回
代碼:
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];
}