共計 1811 個字符,預計需要花費 5 分鐘才能閱讀完成。
Java 中獲取線程返回值的常用方法有以下幾種:
- 使用 Callable 接口和 Future 對象:創建一個 Callable 對象,并使用 ExecutorService 的 submit 方法提交該任務,返回一個 Future 對象。然后可以通過調用 Future 對象的 get 方法來獲取線程的返回值。
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
public class Main {public static void main(String[] args) {ExecutorService executor = Executors.newSingleThreadExecutor();
Future<Integer> future = executor.submit(new MyCallable());
try {int result = future.get();
System.out.println(" 線程返回值:" + result);
} catch (Exception e) {e.printStackTrace();
} finally {executor.shutdown();
}
}
}
class MyCallable implements Callable<Integer> {@Override
public Integer call() throws Exception {// 執行耗時任務,返回結果
return 100;
}
}
- 繼承 Thread 類并重寫 run 方法:通過繼承 Thread 類并重寫 run 方法,在執行耗時任務后,可以通過定義一個成員變量來保存返回值,然后通過調用該線程對象的 join 方法來等待線程執行結束,并獲取返回值。
public class Main {public static void main(String[] args) {MyThread myThread = new MyThread();
myThread.start();
try {myThread.join(); // 等待線程執行結束
int result = myThread.getResult();
System.out.println(" 線程返回值:" + result);
} catch (InterruptedException e) {e.printStackTrace();
}
}
}
class MyThread extends Thread {private int result;
@Override
public void run() {// 執行耗時任務
result = 100;
}
public int getResult() {return result;
}
}
- 使用 FutureTask 類:可以將 Callable 對象作為參數傳遞給 FutureTask 類的構造方法,然后通過調用 FutureTask 對象的 get 方法來獲取線程的返回值。
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
public class Main {public static void main(String[] args) {FutureTask<Integer> futureTask = new FutureTask<>(new MyCallable());
Thread thread = new Thread(futureTask);
thread.start();
try {int result = futureTask.get();
System.out.println(" 線程返回值:" + result);
} catch (InterruptedException | ExecutionException e) {e.printStackTrace();
}
}
}
class MyCallable implements Callable<Integer> {@Override
public Integer call() throws Exception {// 執行耗時任務,返回結果
return 100;
}
}
這些方法都可以用來獲取線程的返回值,選擇哪種方法取決于實際需求和場景。
丸趣 TV 網 – 提供最優質的資源集合!
正文完