Dưới đây là mã mẫu sử dụng giao diện Tương lai để thực hiện cuộc gọi không đồng bộ. Tôi cần một số làm rõ về phương thức get().Thu gom rác và các cuộc gọi không đồng bộ/Các đối tượng tương lai
Future<String> future = getAsyncString();
//do something ...
String msg = "";
if (validation)
return;
else
msg = future.get();
//do something else...
return;
Biến tương lai được khởi tạo trong một phương pháp, vì vậy biến sẽ sớm bị GC xóa sau khi thực hiện phương thức vì nó không còn được sử dụng nữa. Vì vậy, trong trường hợp mã vào câu lệnh if, trạng thái của JVM là gì? Làm thế nào là JVM sẽ xử lý kết quả được bao bọc trong trường hợp không có ai sẽ đọc nó trở lại? Nó có ảnh hưởng đến Thread Pool hay Executor thread không?
Các biến không được xóa bởi GC. GC làm sạch các đối tượng không còn được gọi bởi bất kỳ biến nào. Lưu ý rằng một biến không phải là một đối tượng; một biến là tham chiếu * đối với một đối tượng. – Jesper
vâng, mã cho thấy rằng cá thể trong tương lai sẽ chỉ được sử dụng bên trong phương thức – AntJavaDev
Tại sao bạn xác thực sau 'getAsyncString()' và không phải trước đây? –