当前位置: 首页 > news >正文

实现多线程的另一种方式-Callable

package com.mldn.thread;

import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;

public class TestMyCallable {
     public static void main(String[] args) throws InterruptedException, ExecutionException {
         /*构造方法摘要 
            FutureTask(Callable<V> callable): 
            创建一个 FutureTask,一旦运行就执行给定的 Callable。 
          */

        FutureTask task = new FutureTask(new MyCallable());
        /*
         * class  FutureTask  implements RunnableFuture
         * interface RunnableFuture extends Runnable,Future
         * 说明:FutureTask也是Runnable的子类
         */
        //这里的task可以当作Runnable对象
        
        new Thread(task).start();//启动线程
        System.out.println(task.get());//返回结果
    }
}


/*------------------------自定义类MyCallable---------------------------*/

package com.thread;

import java.util.concurrent.Callable;

/*
 * 自定义类实现Callable接口
 * Runnable和Callable的区别:
 *   Runnable执行完线程程序后没有返回结果(重写run方法)
 *   Callable执行完线程程序后有返回结果 (重写call方法)
 */
public class MyCallable implements Callable<String> {

    @Override
    public String call() throws Exception {
        for(int i=10;i>0;i--){
            System.out.println(i);
        }
        return "票卖完了,下次吧。。。";//有返回结果
    }
}

 

转载于:https://www.cnblogs.com/yuefeng123/p/7463732.html

相关文章:

  • BeginInvoke异步线程
  • ASP.NET Core 运行原理解剖[3]:Middleware-请求管道的构成
  • UVA - 10763 Foreign Exchange
  • 网络编程概述和三要素(IP/端口号/协议)以及Socket通信原理
  • 张春晖让视频的每词每句都可搜索:Autotiming 可以自动配字幕,还将改变哪些领域?...
  • 寄存器调试 (1):应用层基于shell命令访问
  • 谱聚类实例
  • postgresql update returning
  • 其实吧,360的开发,素质也没高到哪去,看代码就看出来了
  • 判断js数据类型
  • Linux上给不是管理员的用户增加安装软件的权限
  • 【已解决】项目加载失败,Web应用程序项目XX已配置为使用IIS
  • JDBC连接数据库:单线程、多线程、批处理插入数据的对比
  • VS2015 +EF6 连接MYSQL数据库生成实体
  • CF 840 D
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • 自己简单写的 事件订阅机制
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • 2017 前端面试准备 - 收藏集 - 掘金
  • android 一些 utils
  • Android开源项目规范总结
  • C语言笔记(第一章:C语言编程)
  • Elasticsearch 参考指南(升级前重新索引)
  • ES10 特性的完整指南
  • Java多态
  • java概述
  • Java-详解HashMap
  • JS字符串转数字方法总结
  • Spring Boot快速入门(一):Hello Spring Boot
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • unity如何实现一个固定宽度的orthagraphic相机
  • 百度地图API标注+时间轴组件
  • 包装类对象
  • 浮动相关
  • 警报:线上事故之CountDownLatch的威力
  • 聊聊redis的数据结构的应用
  • 面试遇到的一些题
  • 普通函数和构造函数的区别
  • 前端临床手札——文件上传
  • 我是如何设计 Upload 上传组件的
  • 项目实战-Api的解决方案
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • kubernetes资源对象--ingress
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • (003)SlickEdit Unity的补全
  • (笔试题)合法字符串
  • (待修改)PyG安装步骤
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (剑指Offer)面试题34:丑数
  • (转)关于pipe()的详细解析
  • (转)平衡树
  • (转载)深入super,看Python如何解决钻石继承难题
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .NET 5种线程安全集合