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);

    }

}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值