1 package bytezero.thread2;
2
3 import java.util.concurrent.Callable;
4 import java.util.concurrent.ExecutionException;
5 import java.util.concurrent.FutureTask;
6
7 /**
8 *
9 * 创建线程的方式三: 实现Callable接口----JDK 5.0 新增
10 *
11 * 如何理解 实现Callable接口的方式创建多线程比实现Runable接口创建多线程的方式强大?
12 * 1.call()可以有返回值
13 * 2.call()可以抛出异常,被外面的操作捕获,获取异常的信息
14 * 3.Callable是支持泛型的
15 *
16 *
17 * @author Bytezero1·zhenglei! Email:420498246@qq.com
18 * create 2021-10-18 18:05
19 */
20
21 // 1.创建一个实现Callable的实现类
22 class NumThread implements Callable{
23 //2.实现call方法,将此线程需要执行的操作声明在 call方法中
24 @Override
25 public Object call() throws Exception {
26 int sum = 0;
27 for (int i = 1; i <100; i++) {
28 if(i % 2 == 0){
29 System.out.println(i);
30 sum += i;
31 }
32
33 }
34 return sum;
35 }
36 }
37
38 public class ThreadNew {
39 public static void main(String[] args) {
40 //3.创建Callable接口实现类的对象
41 NumThread numThread = new NumThread();
42
43 //4.将此allable接口实现类的对象作为参数传递到 FutureTask构造器中,并创建
44 //FutureTask对象
45 FutureTask futureTask = new FutureTask(numThread);
46 //将FutureTask的对象作为参数传递到 Thread的构造器中,创建Thread对象,并
47 //调用 start()方法
48 new Thread(futureTask).start();
49
50 try {
51 //6.获取Callable中的call方法的返回值
52 //get() 返回值即为FutureTask构造器参数Callable实现重写的call()的返回值
53 Object sum = futureTask.get();
54 System.out.println("总和为:"+sum);
55 } catch (InterruptedException e) {
56 e.printStackTrace();
57 } catch (ExecutionException e) {
58 e.printStackTrace();
59 }
60 }
61 }

Java -----多线程 创建线程的方式三: 实现Callable接口----JDK 5.0 新增的更多相关文章

  1. Java之创建线程的方式三:实现Callable接口

    import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import java.util ...

  2. 创建线程的方式三:实现Callable接口 --- JDK 5.0新增

    /** * 创建线程的方式三:实现Callable接口. --- JDK 5.0新增 * * * 如何理解实现Callable接口的方式创建多线程比实现Runnable接口创建多线程方式强大? * 1 ...

  3. 创建执行线程方式三:实现Callable接口

    Callable接口 ① Java 5.0 在 java.util.concurrent 提供了一个新的创建执行 线程的方式:Callable 接口② Callable 接口类似于 Runnable, ...

  4. 创建线程的方式三:实现Callable接口-----JDK5.0 新增

    package com.yhqtv.java2; /* * 创建线程的方式三:实现Callable接口-----JDK5.0 新增 * * 如何理解实现Callable接口的方式创建多线程比实现Run ...

  5. 7. Callable 创建线程的方式三

    package com.gf.demo06; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionEx ...

  6. Java学习笔记-多线程-创建线程的方式

    创建线程 创建线程的方式: 继承java.lang.Thread 实现java.lang.Runnable接口 所有的线程对象都是Thead及其子类的实例 每个线程完成一定的任务,其实就是一段顺序执行 ...

  7. Java多线程——创建线程的两种方式

    创建线程方式一:继承Thread类. 步骤:1,定义一个类继承Thread类.2,覆盖Thread类中的run方法.3,直接创建Thread的子类对象创建线程.4,调用start方法开启线程并调用线程 ...

  8. java中创建线程的方式

    创建线程的方式: 继承thread 实现runnable 线程池 FurureTask/Callable 第一种:继承thread demo1: public class demo1 { public ...

  9. Java之创建线程的方式四:使用线程池

    import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.c ...

  10. Java 多线程 - 创建线程的方法 + Executors.newXXXThreadPool()缺点

    java中创建线程的三种方法以及区别: https://www.cnblogs.com/3s540/p/7172146.html 通过Executor 的工具类,创建三种类型的普通线程池: https ...

随机推荐

  1. 【JS 逆向百例】37网游登录接口参数逆向

    声明 本文章中所有内容仅供学习交流,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 逆向目标 目标:37网游登录 主页:https://www.37.co ...

  2. pymongo中针对指定集合更新validator规则

    问题描述: 针对mongo中已创建的集合,更新validator验证器规则 解决方法 在确保pymongo中所使用的用户对目标数据库具有dbAdmin之类的管理权限的前提下(若无权限,可在mongo中 ...

  3. ASP.NET MVC 通过ActionFilter获取请求的参数

    using System; using System.Collections.Generic; using System.Linq; using System.Net.Http; using Syst ...

  4. 基于.Net Core3.1 MVC + EF Core的项目(一)框架的初步搭建

    项目暂时分为六大块,结构如图所示 代码地址是  https://github.com/hudean/VacantCloud-   里面有许多没有完成,不过一些大致的内容都写的差不多了,权限认证依赖注入 ...

  5. C++ Boost 函数与回调应用

    #include <iostream> #include <string> #include <boost\bind.hpp> using namespace st ...

  6. centos离线安装chrony

    环境 CentOS Linux release 7.9.2009 (Core) 工具 chrony-2.2.1.tar.gz 下载地址:https://download.tuxfamily.org/c ...

  7. uni-app 介绍及使用

    一.什么是uni-app uni-app由dcloud公司开发的多端融合框架,是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS.Android.Web(响应式).以 ...

  8. Promise, async, await实现异步编程,代码详解

    写在开头 一点题外话 其实最近在不断的更新Java的知识,从基础到进阶,以及计算机基础.网络.WEB.数据库.数据结构.Linux.分布式等等内容,预期写成一个既可以学习提升又可以面试找工作的< ...

  9. 17.5 稀疏调拨的内存映射文件--《Windows核心编程》

    原文链接:https://www.likecs.com/show-306421749.html,原文中代码是C++MFC程序,更详细.本文是C语言测试代码. (1)稀疏文件(Sparse File)定 ...

  10. ASP.NET Core分布式项目实战(Identity Server 4回顾,Consent 实现思路介绍)--学习笔记

    任务17:Identity Server 4回顾 上一节我们中间留了一部分,登录之后的 RequireConsent,就是用户授权这一步没有做,直接跳过,这种情况可以理解为我们自己比较信任的客户端,这 ...