关于使用Callable接口和Future接口创建线程

这里主要讲一下使用的方式,有两种:

第一种:使用Callable和FutureTask接口,Thread类

/**
 * 使用Callable的方法的时候,需要将要执行的内容写到call()方法中
 * @author bwq
 * @date 2019年3月10日下午4:00:50
 */
public class Demo01{
    
    public static void main(String[] args) {
        
        Call call = new Call();
        FutureTask<Integer> futureTask = new FutureTask<>(call); 
        Thread thread=new Thread(futureTask);
        thread.run();
        int sum = 1;
        try {
            sum = futureTask.get();
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ExecutionException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        System.out.println(sum);
        
    }

}
//继承Callable对象,泛型类型为返回的数据的类型
class Call implements Callable<Integer>{

    @Override
    public Integer call() throws Exception {
        int num = 0;
        System.out.println("这里是Call的call方法!");
        return num;
    }
    
}

第二种方式:使用Callable和FutureTask接口,ExecutorService接口                                               

public class Demo02 {
    
    public static void main(String[] args) {
        
        Call call = new Call();
        FutureTask<Integer> futureTask1 = new FutureTask<>(call);
        FutureTask<Integer> futureTask2 = new FutureTask<>(call);
        ExecutorService executor = Executors.newFixedThreadPool(2);
        
        executor.submit(futureTask1);
        executor.submit(futureTask2);
        
        try {
            System.out.println(futureTask1.get());
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (ExecutionException e) {
            e.printStackTrace();
        }
    }

}
//继承Callable对象,泛型类型为返回的数据的类型
class Call implements Callable<Integer>{

    @Override
    public Integer call() throws Exception {
        int num = 0;
        System.out.println("这里是Call的call方法!");
        return num;
    }
    
}

猜你喜欢

转载自www.cnblogs.com/mubai-1996-code/p/10506228.html