添加到Joseph Ottinger的答案中,要传递要在Callable的call()方法中使用的值,可以使用闭包:
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)); } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)