Unten finden Sie einen Beispielcode, der die Future-Schnittstelle für einen asynchronen Aufruf verwendet. Ich brauche etwas Aufklärung über die Methode get().Garbage Collection und asynchrone Aufrufe/Future-Objekte
Future<String> future = getAsyncString();
//do something ...
String msg = "";
if (validation)
return;
else
msg = future.get();
//do something else...
return;
Die Zukunft Variable wird in einem Verfahren initialisiert, so dass der Variable wird in Kürze durch die GC nach der Methode der Ausführung gelöscht werden, da es nicht mehr verwendet wird. Also, in dem Fall, dass der Code die if-Anweisung eingibt, was wird der Status der JVM sein? Wie wird die JVM das Wrapped-Ergebnis verarbeiten, falls es nicht zurückgelesen wird? Beeinflusst es den Thread Pool oder den Thread Executor?
Variablen werden vom GC nicht gelöscht. Der GC bereinigt Objekte, auf die keine Variablen mehr verweisen. Beachten Sie, dass eine Variable kein Objekt ist. Eine Variable ist eine * Referenz * für ein Objekt. – Jesper
Nun ja, der Code schlägt vor, dass die zukünftige Instanz nur innerhalb der Methode verwendet wird. – AntJavaDev
Warum validieren Sie nach 'getAsyncString()' und nicht vorher? –