Callable同Runnable一样是个接口,实现该接口并实现call方法,将同步代码放入call方法中
使用它的好处是可以在方法抛出异常,无需再方法内部处理了,否则try catch太多
它还可以有返回值类型,无需返回就返回一个null
Callable | Runnable |
---|---|
灵活,使用throws处理异常 | |
可以有返回值 | |
使用了泛型,可以指定call()的返回值 | |
主线程如果需要获取call()的返回值,此时主线程是阻塞状态 |
public class CallableTest {
public static void main(String[] args) {
//创建实现类对象
NumberThread numberThread = new NumberThread();
//创建futureTask传送进去实现类对象
FutureTask futureTask = new FutureTask<>(numberThread);
//run执行
futureTask.run();
System.out.println(numberThread.getTotal());
}
}
//实现Callable
class NumberThread implements Callable{
int total=0;
//重写call()方法
@Override
public Object call() throws Exception {
for (int i = 0; i < 100; i++) {
if(i%2==0){
System.out.println(i);
total+=i;
}
}
return total;
}
public int getTotal(){
return total;
}
}
推荐阅读:
欢迎使用
windows配置本地 dns,本地给IP地址绑定域名
Error: Application Server not specified
单词后缀与词性思维导图
idea编写jsp没有函数提示的解决办法
idea快捷键
设置kindle推送地址
IDEA配置tomcat的访问根目录路径
tomcat运行报错 严重错误 通常是xml配置文件出错
图解idea不能新建JavaClass和Package解决办法
行动消除疑虑