Hallo, ich bin im Allgemeinen neu zu Java und arbeite an Minecraft Plugins, um zu beginnen.Rückgabe eines Wertes aus einem anderen Thread. Ohne Haupt Thread zu blockieren
Hier ist mein Problem. Ich versuche, diese Methode auf dem Hauptserver-Thread aufzurufen und den Rückgabewert abzurufen.
Hier ist, was ich versuche zu erreichen.
private String FetchEntry(String TableName, String KeyID, String ColumnName) {
String value = "NOTHING";
Bukkit.getServer().getScheduler().scheduleAsyncDelayedTask(LGCore.plugin, new Runnable() {
@Override
public void run() {
try {
ResultSet resultSet;
resultSet = GetConnection().createStatement().executeQuery("SELECT " + ColumnName + " FROM " + TableName + " WHERE IdKey='" + KeyID + "';");
resultSet.first();
String returnvalue = resultSet.getString(1);
//Here i would like to set value to returnvalue and return it
} catch (SQLException e) {
e.printStackTrace();
}
}
});
return value;
}
Sie können das Ergebnis einer asynchronen Operation nicht synchron zurückgeben. Ich denke, das ist, was Menschen Zukunft für oder Callbacks oder Observable/Single, etc. – EpicPandaForce
Jeder Rückruf kann Ihnen dabei helfen. –
So gibt es keine Möglichkeit, den Wert direkt vom Methodenaufruf zurückzugeben. –