0
你好,我通常是新來的Java和Minecraft插件工作開始。從另一個線程返回一個值。沒有阻塞主線程
這是我的問題。我試圖在主服務器線程上調用此方法並獲取返回值。
這是我想要實現的。
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;
}
您將無法同步返回異步操作的結果。我認爲這是人們使用Future,或者回調,Observable/Single等等。 – EpicPandaForce
任何回調都可以幫助你做到這一點。 –
因此,無法從方法調用中返回正確的值。 –