java中Callable实现多线程

package com.test.test05;

import java.util.Random;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;

//public interface Callable,这个Callable是泛型类
public class TestRandomNum implements Callable {
    /*
    1.实现Callable接口,可以不带泛型,如果不带泛型,那么call方式的返回值就是Object类型。
    2.如果带泛型,那么call的返回值就是泛型对应的类型。
    3.从call方法看到:方法有返回值,可以抛出异常。
    */
    @Override
    public Integer call() throws Exception {
        //return null;
        return new Random().nextInt(10); //返回10以内的随机数
    }
}

class Test{
    public static void main(String[] args) throws ExecutionException, InterruptedException {
        //定义一个线程对象
        TestRandomNum trn = new TestRandomNum();
        FutureTask ft = new FutureTask(trn);
        Thread t = new Thread(ft);
        t.start();
        //获取线程得到的返回值
        Object obj = ft.get();
        System.out.println(obj); //返回10以内的随机数
    }
    /*
    1 //执行的第一次返回
    9 //执行的第二次返回
    8 //执行的第三次返回
    * */
}

你可能感兴趣的:(java,java,开发语言)