使用Callable来获取数组的最大值

来源:互联网 发布:单片机程序设计师培训 编辑:程序博客网 时间:2024/05/18 11:47

首先创建实现Callable的类,代码如下:

import java.util.concurrent.Callable;/** * Created by ea on 2017/3/13. */public class TestCallable implements Callable<Integer>{    private int[] arr;    private int start, end;    public TestCallable(int[] a, int start, int end)    {        arr = a;        this.start = start;        this.end = end;    }    public Integer call()    {        int ans = Integer.MIN_VALUE;        for (int i = start; i < end; i++)        {            ans = Math.max(ans, arr[i]);        }        return ans;    }}
然后在主程序中创建ExecutorService,提交任务,获取计算结果。

import java.util.concurrent.*;public class Main {    public static void main(String[] args)    {        int[] a = {4, 5, 6, 1, 2, 3};        TestCallable call1 = new TestCallable(a, 0, a.length / 2);        TestCallable call2 = new TestCallable(a, a.length / 2 + 1, a.length);        ExecutorService s = Executors.newFixedThreadPool(3);        Future<Integer> t1 = s.submit(call1);        Future<Integer> t2 = s.submit(call2);        try {            int ans = Math.max(t1.get(), t2.get());            System.out.println("ans:" + ans);        }        catch(InterruptedException e) {            e.printStackTrace();        }        catch (ExecutionException e) {            e.printStackTrace();        }    }}



0 0
原创粉丝点击