package com.wyz.juc;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
/**
* 1.创建执行线程的方式三:实现Callable 接口。
* 相较于实现Runnable 接口的方式,方法可以有返回值,并且可以抛出异常。
* 2.执行Callable 方式,需要FutureTask 实现类的支持,用于接收运算结果。
* FutureTask 是Future 接口的实现类
*
* Java 5.0 在 java.util.concurrent 提供了一个新的创建执行
* 线程的方式:Callable 接口
* Callable 接口类似于 Runnable,两者都是为那些其实例可
* 能被另一个线程执行的类设计的。但是 Runnable 不会返
* 回结果,并且无法抛出经过检查的异常。 Callable 需要依赖FutureTask ,FutureTask 也可以用作闭
* 锁。
* @author WangChong
*/
public class TestCallable {
public static void main(String[] args) {
ThreadDemo1 threadDemo1 = new ThreadDemo1();
FutureTask<Integer> result = new FutureTask<>(threadDemo1);
new Thread(result).start();
//接收线程运算后的结果
try {
//FutureTask 也可以用于闭锁
Integer sum = result.get();
System.out.println(sum);
System.out.println("----------------------");
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
}
}
class ThreadDemo1 implements Callable<Integer> {
@Override
public Integer call() throws Exception {
int sum = 0;
for (int i = 0; i < Integer.MAX_VALUE; i++) {
sum += i;
}
return sum;
}
}
//class ThreadDemo1 implements Runnable{
//
// @Override
// public void run() {
//
// }
//}
juc 学备忘录3--Callable
最新推荐文章于 2022-05-15 17:37:07 发布