package com.yhqtv.java2;

 /*
* 创建线程的方式三:实现Callable接口-----JDK5.0 新增
*
* 如何理解实现Callable接口的方式创建多线程比实现Runnable接口创建多线程方式强大?
* 1.call()可以有返回值的。
* 2.call()可以抛出异常,被外面的操作捕获,获取异常的信息
* 3.Callable是支持泛型的
* @author XMKJ yhqtv.com Email:yhqtv@qq.com
* @create 2020-04-29-22:06
*
*/ import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
//1.创建一个实现Callable的实现类
class NumThread implements Callable{
// 2.实现call方法,将此线程需要执行的操作声明在call()中
@Override
public Object call() throws Exception {
int sum=0;
for (int i = 1; i <= 100; i++) {
if(i%2==0){
sum+=i;
}
}
return sum;
}
} public class ThreadNew {
public static void main(String[] args) {
// 3.创建Callable接口实现类的对象
NumThread numThread=new NumThread();
// 4.将此Callable接口实现类的对象作为传递到FutureTask构造器中,创建FutureTask的对象
FutureTask futureTask = new FutureTask(numThread);
// 5.将FutureTask的对象作为参数传递到Thread类的构造器中,创建Thread对象,并调用start()
new Thread(futureTask).start(); try {
//6.获取Callable中call方法的返回值
//get()返回值即为FutuerTask构造器参数Callable实现类重写的call()的返回值。
Object sum = futureTask.get();
System.out.println(sum);
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
}
}

最新文章

  1. 狼人杀BETA阶段计划简介
  2. hdu5119 dp
  3. Linux下设置svn过滤文件类型
  4. elk平台分析nginx日志的基本搭建
  5. github中国版本coding.net 的部署和使用
  6. poj 1084 舞蹈链(纠结题)
  7. mysqli和mysql和pdo查询
  8. 一步一步挖出Compute
  9. WebApi Help Pages
  10. Python3 字符串格式化
  11. C为变量提供了5中存储模型(类)
  12. Spring ioc 详解
  13. 设计模式学习心得&lt;工厂方法 Factory Method&gt;
  14. solr7.4 tomcat环境下搭建(windows)
  15. ubuntu下配置华为交换机s2016
  16. 名字&amp;值
  17. DevExpress GridControl+UserControl实现分页
  18. C程序设计语言笔记-第一章
  19. 01 Java图形化界面设计&mdash;&mdash;容器(JFrame)
  20. [Ljava.lang.String; cannot be cast to java.lang.String报错的原因

热门文章

  1. Oracle如何查询不等于某数值
  2. Java合并png图片
  3. Python3安装Crypto加密包
  4. raphael.js 使用指南
  5. LeetCode 题解 | 70. 爬楼梯
  6. 批处理 bat 查询局域网内在线电脑IP
  7. 使用tap、Fragment等相关相关知识点。实现类似微信的界面
  8. Linux学习,Vim以及Vi常用快捷键
  9. 深入理解== 和 equals 的本质区别
  10. 33 File 文件及目录操作