sách gpt4 ai đã đi

java future 执行

In lại 作者:行者123 更新时间:2023-12-01 17:07:09 28 4
mua khóa gpt4 Nike

我正在阅读有关 Java 中的 Future 和 javascript 中的 Promises 的内容。下面是我作为示例编写的代码。我的问题是分配给 future 的任务什么时候开始执行?

  1. 当如下行创建 future 时:
    contentsFuture = startDownloading(new URL("http://www.example.com"));

  2. 或者当我们调用lấy方法时
    最终字符串内容=contentsFuture.get();

看起来执行是在 lấy 调用期间开始的,因为它是一个阻塞调用,但是为什么它强制我将 startDownloading 调用放在 try catch block 中?

public class Futures1 {

private static final ExecutorService pool = Executors
.newFixedThreadPool(10);

public static void main(String[] args) {

Future contentsFuture = null;
thử {
contentsFuture = startDownloading(new URL("http://www.example.com"));
} catch (MalformedURLException e) {
e.printStackTrace();
}
// other computation
thử {
final String contents = contentsFuture.get();
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}

}

public static Future startDownloading(final URL url) {
return pool.submit(new Callable() {
@Ghi đè
public String call() throws Exception {
try (InputStream input = url.openStream()) {
return IOUtils.toString(input, StandardCharsets.UTF_8);
}
}
});
}
}

1 Câu trả lời

ExecutorService 在提交底层任务后选择何时启动该任务。因此,它通常会在调用 ExecutorService.submit 和调用 Future.get 之间的某个时间点启动。

关于java future 执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25082469/

28 4 0
Bài viết được đề xuất: java - 打印 Java 数组的最简单方法是什么?
Bài viết được đề xuất: java - 如何使用从 for 循环获取的值作为同一方法的返回值
Bài viết được đề xuất: java - String.Split - 意外行为
Bài viết được đề xuất: sql - 按顺序使用 asc 和 desc 变量
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com