• Callable接口用法


    注意点:FutureTask是Runnable的实现类,它的构造器可以传Callable接口的实现类。

     

     例子如下:

    class MyThread implements Callable<Integer> {

    @Override
    public Integer call() throws Exception {
    System.out.println(Thread.currentThread().getName()+" come in Callable");
    return 1024;
    }
    }

    public class CallableDemo {
    public static void main(String[] args) throws ExecutionException, InterruptedException {
    //多个线程只抢一次futureTask,计算结果只有一次,如果要起多个futureTask,就要再创建新的实例,见如下:
    FutureTask<Integer> futureTask = new FutureTask<Integer>(new MyThread());
    FutureTask<Integer> futureTask1 = new FutureTask<Integer>(new MyThread());
    new Thread(futureTask,"AA").start();
    new Thread(futureTask1,"BB").start();
    System.out.println("main---------------------");
    int number = 100;

    // while (!futureTask.isDone()) {
    // 此方法跟futureTask.get()效果一样,都是等待执行完结果
    // }

    //要求获得Callable线程的计算结果,如果没有计算完成就要去强求会导致阻塞,所以最好放最后面执行。
    int result = futureTask.get();
    System.out.println("******运算结果为:" +(number+result));

    }
    }

    运行结果见下图:

  • 相关阅读:
    4-6 随机数
    linux下安装jdk
    markdown使用教程
    IDE新建gradle各种坑
    day05泛型类和泛型方法
    day05集合
    day15 Ui自动化中三种等待方式
    day15 Ui自动化元素的定位
    Windows系统
    解决sublime text 3使用Install Package时出现There are no packages available for installation问题
  • 原文地址:https://www.cnblogs.com/liuyi13535496566/p/12164009.html
Copyright © 2020-2023  润新知