Java之实现多线程的方式三:实现Callable接口(结合线程池使用)

1.Callable接口介绍

    JDK API文档描述:  

   Callable 接口类似于 Runnable,两者都是为那些其实例可能被另一个线程执行的类设计的。但是 Runnable 不会返回结果,并且无法抛出经过检查的异常。

2.实现Callable接口,重写call()方法

package com.xiao.callable;

import java.util.concurrent.Callable;
/**
 * @Author 笑笑
 * @Date 18:37 2018/05/23
 */
public class MyThreadClass implements Callable<String>{

    //V call()  由于该方法的返回值是个泛型V,所以具体的返回类型可以自己定义,下面返回值设置为了String,
    @Override
    public String call() throws Exception {

        return "笑笑";
    }
}

3.使用工厂类Executors的静态方法newFixedThreadPool()方法创建线程池,返回ExecutorService接口的实现类对象,然后调用submit()方法提交线程任务

package com.xiao.callable;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
/**
 * @Author 笑笑
 * @Date 19:00 2018/05/23
 */
public class CallableDemo {

    public static void main(String[] args) throws Exception{
        //参数表示此线程池里有多少可用的线程数量
        ExecutorService es = Executors.newFixedThreadPool(3);
        //提交线程任务,返回一个Future接口,参数为Callable实现类对象
        Future<String> future = es.submit(new MyThreadClass());
        //获取返回值
        String s = future.get();
        System.out.println(s);

    }

}


猜你喜欢

转载自blog.csdn.net/u012430402/article/details/80424232