多线程实现Callable的好处有三点

1、Callable支持泛型

2、Callable支持返回值

3、Callable可以抛出异常

class MyThread2 implements Callable {
public String name; public MyThread2(String name) {
this.name = name;
} @Override
public Object call() throws Exception {
for (int i = 0; i < 4; i++) {
System.out.println("这是线程" + this.name + ":" + i);
}
return name + "执行完成";
}
} public class ThreadDemo {
public static void main(String[] args) {
MyThread2 myThread1 = new MyThread2("线程A");
MyThread2 myThread2 = new MyThread2("线程B");
FutureTask futureTask1 = new FutureTask(myThread1);
FutureTask futureTask2 = new FutureTask(myThread2);
new Thread(futureTask1).start();
new Thread(futureTask2).start();
try {
Object o1 = futureTask1.get();
System.out.println(o1);
Object o2 = futureTask2.get();
System.out.println(o2);
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
} }
}
  

最新文章

  1. MySQL基础知识和操作(一)
  2. iOS 疑难杂症 — — Swift debugger 无法在控制台 po 变量值的问题
  3. 实现携程X分钟前有人预定功能
  4. partproble在RHEL 6下无法更新分区信息
  5. webservice的简单示例的实现步骤
  6. UNIX网络编程-recv、send、read、write之间的联系与区别
  7. GDC2016【彩虹六号:围攻 】使丰富的“突破”成为可能的破坏系统
  8. isPowerOfTwo
  9. iOS验证码倒计时(GCD实现)
  10. bzoj2738
  11. Servlet &amp; JSP - Decorating Requests and Responses
  12. js推断元素是否隐藏
  13. java中的Set的使用以及各种遍历方法(较为全面)
  14. WebServerice的发布
  15. 关于css那些常用却有点记不住的属性
  16. SQL 增加列、修改列、删除列
  17. 学习Spring Boot:(二十七)Spring Boot 2.0 中使用 Actuator
  18. 【数据结构与算法】自己动手实现图的BFS和DFS(附完整源码)
  19. 错误:“Cannot load JDBC driver class &#39;com.mysql.jdbc.Driver”的解决方法
  20. 【转】Keil ARM开发 error L6236E错误解决

热门文章

  1. ThreadLocal源码分析与实践
  2. APP自动化-环境安装
  3. 使用redis来调用iptables,封禁恶意IP
  4. springboot+mybatis集成分页功能
  5. Book of Shaders 04 - 网格噪声:Worley Noise
  6. Python中matplotlib.pyplot.imshow画灰度图的多种方法
  7. matlab中drawnow更新图窗并处理回调
  8. IntelliJ IDEA Commons IO环境搭建
  9. ThreeJS系列1_CinematicCameraJS插件详解
  10. Go path/filepath包