首页 > 编程开发 > Java    日期:2020-11-04 / 浏览

实现Callable接口(jdk8新特性)

可以获得线程的返回值

*前两种方式没有返回值,因为run方法返回void

创建一个未来任务类对象 Futrue task = new Future(Callable<>);重写call()方法    可以使用匿名内部类方式

task.get()方法获取线程返回结果

get方法执行会导致当前方法阻塞 效率较低

代码如下

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

public class Test_13 {
  public static void main(String[] args) {
    System.out.println(Thread.currentThread().getName() + "begin");
    FutureTask task = new FutureTask(new Callable() {
      @Override
      public Object call() throws Exception {
        System.out.println(Thread.currentThread().getName() + "start");
        Thread.sleep(1000 * 5);
        int a = 100;
        int b = 200;
        System.out.println(Thread.currentThread().getName() + "over");
        return a + b;
      }
    });
    Thread thread = new Thread(task);
    thread.start();
    try {
      System.out.println(task.get());
    } catch (InterruptedException e) {
      e.printStackTrace();
    } catch (ExecutionException e) {
      e.printStackTrace();
    }
    System.out.println(Thread.currentThread().getName() + "end");
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持免费资源网。

觉得上面的内容有用吗?快来点个赞吧!

点赞() 我要打赏

温馨提示 : 本站内容来自会员投稿以及互联网,所有源码及教程均为作者总结编辑,请大家在使用过程中提前做好备份,以免发生无法预知的错误,源码类教程请勿直接用于生产环境!

 可能感兴趣的文章