码迷,mamicode.com
首页 > 其他好文 > 详细

Callable接口用法

时间:2020-01-07 22:48:07      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:src   rgs   ima   没有   getname   int   start   runnable   exec   

注意点: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));

}
}

运行结果见下图:

技术图片

Callable接口用法

标签:src   rgs   ima   没有   getname   int   start   runnable   exec   

原文地址:https://www.cnblogs.com/liuyi13535496566/p/12164009.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!