久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

java怎么獲取線程返回值

182次閱讀
沒有評論

共計 1811 個字符,預計需要花費 5 分鐘才能閱讀完成。

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;
    }
}

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

丸趣 TV 網 – 提供最優質的資源集合!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-12-13發表,共計1811字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 灵台县| 玉山县| 呈贡县| 绵竹市| 礼泉县| 汽车| 湾仔区| 康乐县| 璧山县| 汉阴县| 巴林左旗| 双辽市| 梁河县| 增城市| 永济市| 资源县| 涞源县| 江口县| 司法| 沂南县| 乡城县| 怀来县| 大洼县| 抚州市| 东明县| 双江| 麦盖提县| 三门县| 公安县| 民权县| 甘孜县| 沐川县| 资阳市| 永福县| 衢州市| 南和县| 梁河县| 崇义县| 安平县| 汨罗市| 右玉县|