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

浙公网安备 33010602011771号