Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说runnable 和 callable 有什么区别,希望能够帮助你!!!。
callable的源码如下
public interface Callable<V> {
V call() throws Exception;
}
存在一个泛型保存返回结果,所以可以使用Future保存异步计算结果
Future接口具有以下方法
public interface Future<V> {
V get() throws . .;
V get(long timeout, TimeUnit unit) throws . .
void cancel(boolean maylnterrupt);
boolean isCancelled();
boolean isDon();
}
为了把callable接口转换为Runable和Future,java提供了FutureTask 包装器
public class CallableTest<V> implements Callable {
@Override
public Integer call() throws Exception {
int a = 0;
for (int i = 0; i < 100; i++) {
a=a+i;
Thread.sleep(10);
}
return a;
}
}
创建如上一个callable接口实现类
CallableTest<Integer> integerCallableTest = new CallableTest<>();
FutureTask<Integer> integerFutureTask = new FutureTask<Integer>(integerCallableTest);//实例化FutureTask,使用callableTest
Thread thread = new Thread(integerFutureTask);//FutureTask实例作为Thread的target来创建Thread对象。
thread.start();
Integer integer = integerFutureTask.get();
今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
上一篇
已是最后文章
下一篇
已是最新文章