gpt4 book ai didi

kotlin - Kotlin 中的并发 Future 语法

转载 作者:行者123 更新时间:2023-12-02 13:36:30 26 4
gpt4 key购买 nike

我为 Future 使用简单的 java 代码:

Future<Integer> futureTask = executor.submit(() -> {
System.out.println("I'm Callable task.");
return 1 + 1;
});

当我将它粘贴到 kotlin 类时,它会转换为:
val futureTask = executor.submit {
println("I'm Callable task.")
1 + 1
}

但是当我尝试获取 Java 类中的值时,我得到的是 null 而不是数字
val integ = futureTask.get()

当我在 java 代码中写 return 时,我的 ide 警告这里不允许 return。

完整的 kotlin 代码如下:
fun main(args: Array<String>) {
val executor = Executors.newSingleThreadExecutor()
val futureTask = executor.submit {
println("I'm Callable task.")
1 + 1
}

println(futureTask.get())
executor.shutdown() }

输出:
I'm Callable task.
null
Future 的正确语法是什么? ?

最佳答案

那是因为有两个submit ExecutorService 中的方法并且使用了错误的。

<T> Future<T> submit(Callable<T> task);

Future<?> submit(Runnable task);

您的 lambda 函数被转换为 Runnable 而不是 Callable。
您可以通过以下方式解决此问题:

val futureTask = executor.submit(Callable {
println("I'm Callable task.")
1 + 1
})

关于kotlin - Kotlin 中的并发 Future 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55412969/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com