91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

java怎么獲取線程返回值

小億
137
2023-11-06 21:08:23
欄目: 編程語言

Java中獲取線程返回值的常用方法有以下幾種:

  1. 使用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;
    }
}
  1. 繼承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;
    }
}
  1. 使用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;
    }
}

這些方法都可以用來獲取線程的返回值,選擇哪種方法取決于實際需求和場景。

0
肇庆市| 岢岚县| 南召县| 涞水县| 永和县| 赞皇县| 石泉县| 蒲江县| 黄冈市| 遂川县| 历史| 聂拉木县| 安丘市| 郸城县| 股票| 黑龙江省| 九龙县| 高碑店市| 桂阳县| 马尔康县| 新宾| 寻乌县| 军事| 九台市| 宁远县| 洪湖市| 衡阳市| 红安县| 远安县| 嘉善县| 高碑店市| 吉隆县| 津市市| 韶关市| 松江区| 湖州市| 商南县| 徐汇区| 中宁县| 武城县| 苏尼特左旗|