Callable创建线程

这是第三种创建线程的方式

demo

class MyThread implements Callable<Integer>{

    @Override
    public Integer call() throws Exception {
        System.out.println("---------welcome to call function");
        //阻塞一下
        try {
            TimeUnit.SECONDS.sleep(4);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return 2020;
    }}

/*
 * 多线程中,第三种获取多线程的方式
 * 1.get方法一般放在最后一行
 */
public class CallableDemo {
    

    public static  void main(String[] args) throws InterruptedException, ExecutionException {
        FutureTask<Integer> futureTask = new FutureTask(new MyThread());
        new Thread(futureTask,"aa").start();
        new Thread(futureTask,"bb").start();
        System.out.println(Thread.currentThread().getName()+"***计算完成");
        //获取call方法中的返回值
        System.out.println(futureTask.get());
    }
    /**打印只执行一个call
     * ---------welcome to call function
        main***计算完成
        2020
     */

}

猜你喜欢

转载自www.cnblogs.com/fengyangcai/p/12902722.html