JUC Callable 创建线程 FutureTask

一、区别 Runnable

1、返回值

2、处理异常

3、实现方法

二、FuturnTask

1、创建线程,需借助FuturnTask

2、获取返回值

FutrunTask对象.get()

三、案例

package com.wt.call;

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

class PrintNum implements Callable{
    @Override
    public Integer call() throws Exception {
        System.out.println(Thread.currentThread().getName()+ "进入call");
        return 1024;
    }
}


public class Demon01 {
    public static void main(String[] args) {
        PrintNum printNum = new PrintNum();
        FutureTask<Integer> integerFutureTask = new FutureTask<Integer>(printNum);
        new Thread(integerFutureTask, "AA").start();
        try {
            // 获取返回值
            System.out.println(integerFutureTask.get());
        } catch (Exception e) {
            e.printStackTrace();
        }
        // 匿名
        FutureTask<String> stringFutureTask = new FutureTask<String>(new Callable<String>() {
            @Override
            public String call() throws Exception {
                System.out.println(Thread.currentThread().getName()+"进入");
                return "Hello";
            }
        });

        new Thread(stringFutureTask, "BB").start();
        try {
            System.out.println(stringFutureTask.get());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

 

posted @ 2025-05-31 17:28  市丸银  阅读(11)  评论(0)    收藏  举报