0
在执行Java到Groovy代码迁移的初始阶段时,我遇到了一个问题,即当Java返回正确的整数(123)时,Groovy版本从Future返回null。未来从执行器服务提交返回null提交
在J1.java和G1.groovy之间进行的唯一更改是类名和lambda到闭包转换。
//文件:J1.java
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
public class J1 {
public static void main (String... args) throws Exception {
ExecutorService executor = Executors.newFixedThreadPool (1);
Future<Integer> future = executor.submit (() -> 123);
System.out.println ("Result: " + future.get());
executor.shutdown();
}
}
//文件:G1.groovy
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
public class G1 {
public static void main (String... args) throws Exception {
ExecutorService executor = Executors.newFixedThreadPool (1);
Future<Integer> future = executor.submit ({ -> 123 });
System.out.println ("Result: " + future.get());
executor.shutdown();
}
}
Java结果:123
Groovy的结果:空
这是实验如果是的话,为什么?我尝试了许多变体,都产生相同的结果。有什么我缺少使用Groovy产生相同的结果?
Groovy: 2.4.5
Java: 1.8 64-bit
Platform: Windows 7 64-bit