本文介绍了如何从Callable()返回对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试从call()返回一个二维数组,我遇到了一些问题。到目前为止,我的代码是:
I'm trying to return a 2d array from call(), I'm having some issues. My code so far is:
//this is the end of main
Thread t1 = new Thread(new ArrayMultiplication(Array1, Array2, length));
t1.start();
}
public int[][] call(int[][] answer)
{
int[][] answer = new int[length][length];
answer = multiplyArray(Array1, Array2, length); //off to another function which returns the answer to here
return answer;
}
此代码编译,这不会返回我的数组。我确定我可能使用了错误的语法,但我找不到任何好的例子。
This code compiles, this is not returning my array. I'm sure I'm probably using the wrong syntax, but I can't find any good examples.
编辑:改了一下
推荐答案
添加到Joseph Ottinger的答案,要传递要在Callable的call()方法中使用的值,你可以使用闭包:
Adding to Joseph Ottinger's answer, to pass values to be used inside Callable's call() method, you can use closures:
public static Callable<Integer[][]> getMultiplierCallable(final int[][] xs,
final int[][] ys, final int length) {
return new Callable<Integer[][]>() {
public Integer[][] call() throws Exception {
Integer[][] answer = new Integer[length][length];
answer = multiplyArray(xs, ys, length);
return answer;
}
};
}
public static void main(final String[] args) throws ExecutionException,
InterruptedException {
final int[][] xs = {{1, 2}, {3, 4}};
final int[][] ys = {{1, 2}, {3, 4}};
final Callable<Integer[][]> callable = getMultiplierCallable(xs, ys, 2);
final ExecutorService service = Executors.newFixedThreadPool(2);
final Future<Integer[][]> result = service.submit(callable);
final Integer[][] intArray = result.get();
for (final Integer[] element : intArray) {
System.out.println(Arrays.toString(element));
}
}
这篇关于如何从Callable()返回对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!