下面是使用Future接口進行異步調用的示例代碼。我需要關於get()方法的一些說明。垃圾收集和異步調用/未來對象
Future<String> future = getAsyncString();
//do something ...
String msg = "";
if (validation)
return;
else
msg = future.get();
//do something else...
return;
未來變量的方法初始化,所以變量將由方法的執行後,GC將很快被清除,因爲它不再使用。 因此,如果代碼進入if語句,那麼JVM的狀態是什麼?如果沒有人會讀取它,JVM將如何處理包裝結果?它是否會影響線程池或線程執行程序?
變量不會被GC清除。 GC清除不再被任何變量引用的對象。請注意,變量不是一個對象;一個變量是一個對象的*引用*。 – Jesper
是的,代碼表明未來的實例將只用於方法 – AntJavaDev
爲什麼你在'getAsyncString()'之後驗證而不是之前? –