java并发(五)Callable接口

来源:互联网 发布:淘宝买手店 编辑:程序博客网 时间:2024/05/15 02:38

传建一个线程有四种方式:
1. 创建Thread
2. 创建类实现Runnable,然后new Thread(new Runnable());
3. 创建类实现Callable,然后new Thread(new FutureTask(new Callable()));
4. 线程池

Callable接口创建一个线程

创建一个类实现Callable接口在call()方法

class MyCallable implements Callable<Integer>{    private Integer sum = 0;    /**     * 类似run方法不过带返回值,返回值类型就是泛型的类型     */    @Override    public Integer call() throws Exception {        for(int i=0;i<100;i++){            sum+=i;        }        return sum;    }}

测试:

public class TestCallable {    public static void main(String[] args) {        MyCallable mc = new MyCallable();        FutureTask<Integer>ft = new FutureTask<Integer>(mc);        new Thread(ft).start();        try {            int result = ft.get();            System.out.println("====>"+result);//sum        } catch (InterruptedException e) {            e.printStackTrace();        } catch (ExecutionException e) {            e.printStackTrace();        }    }}

结果输出:
===>4950

0 0