返回首页
苏宁会员
购物车 0
易付宝
手机苏宁

服务体验

店铺评分与同行业相比

用户评价:----

物流时效:----

售后服务:----

  • 服务承诺: 正品保障
  • 公司名称:
  • 所 在 地:
本店所有商品

  • 全新正版Java多线程与大数据处理实战9787301312834北京大学
    • 作者: 李建平|责编:吴晓月//王继伟著 | 李建平|责编:吴晓月//王继伟编 | 李建平|责编:吴晓月//王继伟译 | 李建平|责编:吴晓月//王继伟绘
    • 出版社: 北京大学音像出版社
    • 出版时间:2020-04-01
    送至
  • 由""直接销售和发货,并提供售后服务
  • 加入购物车 购买电子书
    服务

    看了又看

    商品预定流程:

    查看大图
    /
    ×

    苏宁商家

    商家:
    如梦图书专营店
    联系:
    • 商品

    • 服务

    • 物流

    搜索店内商品

    商品分类

    商品参数
    • 作者: 李建平|责编:吴晓月//王继伟著| 李建平|责编:吴晓月//王继伟编| 李建平|责编:吴晓月//王继伟译| 李建平|责编:吴晓月//王继伟绘
    • 出版社:北京大学音像出版社
    • 出版时间:2020-04-01
    • 版次:1
    • 印次:1
    • 印刷时间:2020-04-01
    • 字数:448000
    • 页数:316
    • 开本:16开
    • ISBN:9787301312834
    • 版权提供:北京大学音像出版社
    • 作者:李建平|责编:吴晓月//王继伟
    • 著:李建平|责编:吴晓月//王继伟
    • 装帧:平装
    • 印次:1
    • 定价:79.00
    • ISBN:9787301312834
    • 出版社:北京大学
    • 开本:16开
    • 印刷时间:2020-04-01
    • 语种:中文
    • 出版时间:2020-04-01
    • 页数:316
    • 外部编号:30868269
    • 版次:1
    • 成品尺寸:暂无

    章 Java多线程基础 1
    1.1 初识线程 2
    1.2 Java线程的创建方法 8
    1.3 搭建集成开发环境运行Java多线程 18
    第2章 线程的生命周期 24
    2.1 线程的状态 25
    2.2 线程的生命周期 33
    . 多线程的优先级 40
    第3章 多线程的调度方式 49
    3.1 多线程的调度概述 50
    3.2 线程的睡眠、等待与让步 52
    3.3 多线程的唤醒 60
    3.4 多线程的插队 62
    第4章 多线程的线程组与线程池 71
    4.1 线程组 72
    4.2 线程池 79
    4.3 多线程管理 93
    第5章 多线程的异常处理 97
    5.1 异常的基本概念 98
    5.2 Java中的异常处理 100
    5.3 Java多线程的异常 103
    5.4 自定义多线程异常处理 109
    第6章 多线程定时任务TimerTask 112
    6.1 定时任务 113
    6.2 多线程定时任务 118
    第7章 多线程并发处理 122
    7.1 多线程的并发基础 1
    7.2 Java的多线程的同步 133
    7.3 多线程的异步 144
    7.4 多线程的并发处理工具 149
    第8章 批处理Spring Batch与多线程 157
    8.1 Spring Batch概述 158
    8.2 Spring Batch的监听机制 164
    8.3 Spring Batch的事务处理机制 167
    8.4 Spring Batch与多线程 177
    第9章 大数据任务调度框架rtz与多线程 181
    9.1 rtz概述 182
    9.2 rtz的持久化 183
    9.3 rtz中的多线程设置 189
    0章 大数据中间件Kafka与多线程 206
    10.1 大数据中间件Kafka概述 207
    10.2 Kafka的组件 209
    10.3 Kafka的高可用方案 212
    10.4 Kafka的安装与配置 213
    10.5 Kafka的多线程 219
    1章 多线程实战训练 225
    11.1 多线程模拟交通信号灯 226
    11.2 多线程处理多文件上传 5
    11.3 多线程加速数据获取 251
    11.4 大数据消息中心的设计 264

      李建平,从小学开始接触编程,并多次在参赛中获奖。大学选择自己喜欢的软件工程专业进行了更为系统的学习。之后,先后在中兴通讯、汇丰银行(HSBC)、广电运通研究院等数据处理部门担任过一线的中级、高级软件研发等职务。能熟练使用Java、Python等处理大数据,并拥有10年以上的开发经验。

    章 Java多线程基础
    1.1 初识线程首先介绍线程的概念。我们可以把线程看作有活力、有生命力的,它是让看似安静的一段段代码活动起来的一种形式。在学习本章前,读者如果已经进行过Java简易入门基础的学习,那么理解线程会是一件容易的事情。理解了线程的概念后,会由单线程向多线程进军。
    1.1.1 线程是什么?
    如今,智能手机与我们的生活密不可分。智能手机之所以这样吸引我们,与其能提供丰富多彩的应用程序有密切的关系。在使用这些应用程序,如查阅资讯、单击图标、拉取列表、播放视频和音乐等时,会给人们以视觉和听觉上的享受。同时,智能手机时地对我们的操作进行反馈,友好。这里的每一次反馈,都可能是有一个线程在专心致志地为我们服务。所以,看似陌生的线程实际上已经默默服务人们多时。
    每一个刚接触程序设计的初级人员,在学了种编程语言后都会开始尝试编写一些基本的短小的代码段。在Java中,这些短小的代码段一般会被放入一个class,然后保存到一个扩展名为.java的文件中;之后通过命令行或集成开发环境工具的编译,生成.class文件并让这个.class文件运行起来,得到我们想要的结果。
    例如,有一个简单的模仿游戏打开宝箱得到礼品的程序代码,参考如下:1publicclassOpenBox2publicstaticvoidmain(String[]args)3//设置宝箱中可能包含的水果4Listfruits=newArrayList();5fruits.add(\\\"greenapple\\\");6fruits.add(\\\"redapple\\\");7fruits.add(\\\"banana\\\");8fruits.add(\\\"cherry\\\");9fruits.add(\\\"watermelon\\\");10//获取随机的下标,用于生成随机的水果,范围为0至水果链表的下标11RandomrandomUtil=newRandom();12intrandomInt=randomUtil.nextInt(fruits.size());13System.out.println(\\\"打开宝箱,得到了\\\"+14fruits.get(randomInt)+\\\"!\\\");1516我们将其以文件形式保存到系统中,如图1.1所示。
    图片包含屏幕截图描述已自动生成图1.1 已经保存到系统的Java的类文件这样,该文件中就包含了我们想要运行的一小段程序。当使用Java的命令或单击集成开发环境的run按钮时,程序就会运行起来,并且按照编写好的逻辑反馈相关信息。OpenBox的运行结果如图1.2所示。
    图1.2 OpenBox的运行结果以上这些看似简单的操作过程,可以让我们更好地理解以下几个概念:程序、进程、线程。
    程序可以理解为个人的思维整合所设计和编写的一种有特殊意义的文本作品,其包含一些有特殊含义的词汇、符号、数据及短语缩写,俗称代码。程序本身是一种静态的文本作品,但通过特殊的环境,能让其产生动态的逻辑和具备运算能力。
    上文中的OpenBox.java文件中的文本内容就是程序。
    进程则是对某程序的运行过程。一般地,一份程序的一次运行能产生一个进程,进程是一个动态的概念。进程的运行是需要用到程序的内容的,更确切地说,进程的运行离不开程序,离不开程序中有特殊含义的文本。实际上,进程运行中有专门存放这些文本的区域,该区域称为代码文本区域。程序与进程是一对多的关系,即一个程序可以同时运行一个或多个进程。单击集成开发环境的run按钮时,OpenBox.java对应的一个进程就立刻产生了。
    理解好程序和进程的关系,就可以对线程加以描述和解释。线程是比进程更细小的一级划分,线程可以利用进程所拥有的资源,并且能独立完成一项任务,如计算、输出显示信息等。在引入线程的操作系统中,通常是把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位。进程与线程也是一对多的关系,即一个进程中至少有一个线程与之对应。如果一个进程中有多个线程同时存在,那么就是多线程的进程。上面的OpenBox.java程序运行时,其在产生一个进程的同时,也产生了一个单线程与之对应。也就是说,当运行OpenBox.java程序时,该行为所产生的进程是一个单线程进程。
    程序、进程、线程的关系如图1.3所示。
    图1.3 程序、进程、线程的关系知识拓展近年来,随着大数据的兴起,对于大数据的处理要求比传统的普通数据处理要求有了更高的标准,Java在大数据的处理方面也在不断地优化,特别是在开源社区中,许多开发贡献者提供了许多大数据处理相关的组件和中间件。其中一个称为quasar的组件实现了Java的纤程。纤程是比线程更小的一级划分,它所占用的系统资源更少,可以理解为更轻量级的一种特殊线程。一般地,从占用系统资源的大小方面来说,可以这样排序:进程>线程>纤程。本小节不展开对纤程的介绍,有兴趣的读者可以通过quasar的开源地址(https://itu.com/puniverse/quasar)了解相关内容。
    1.1.2 单线程与多线程在1.1.1小节的讲解中,我们知道了一个进程至少包含一个线程。如果该进程只有一个线程,则将其称为单线程的进程。对于简单的应用程序,的确只要单线程就可以了;但对于一些复杂的应用程序,如与人的交互和反馈比较多时,就需要多线程来完成这些任务。一些大型的软件和游戏等应用程序,一般都包含了多线程来丰富整个系统的功能,以获得强大的处理能,或者通过多状态的即时反馈来增加趣味。
    例如,图1.4所示的经典任天堂FC游戏,虽然是简单的游戏,但却给许多青少年带来了快乐。
    图1.4 经典任天堂FC游戏这些游戏中都加入了多线程,玩家可以获得更多的快乐体验和反馈。多线程能让一个游戏充满活力,让游戏中的物体活动起来。下面我们来看看“马里奥”系列某款游戏的一个画面中的一些多线程,如图1.5所示。
    图1.5 “马里奥”系列某款游戏中的线程图1.5中,玩家手柄控制的主角马里奥是一个独立的线程,能吃的、会走动的蘑菇是一个独立的线程,而行走中的敌人香菇君也是一个独立的线程,另外背景音乐也是一个线程。当然,这幅游戏画面中还有许多的线程在工作,这些众多的线程共同组成了这一生动活泼的经典游戏。读者可以思考这款游戏中还有哪些线程在默默地为游戏玩家提供服务。
    这样的一个游戏实例,实际上也是一个进程。我们可以看到,一个进程可以包含一个或多个线程。单线程的进程虽然也存在,但实际上我们更多的会使用多线程的进程。
    1.1.3 多线程的优势多线程的优势在前面的小节中已经有粗略介绍,本小节将再次从系统的外在表现和内在表现两方面来讲解多线程的优势,如图1.6所示。
    图片包含地图,文字描述已自动生成图1.6 多线程的优势(1)由于有多个线程分工合作,所以有时候用户使用一个线程提供的功能时,另一个线程已经准备着为用户提供下一步的功能,能节省用户的等待时间。
    (2)如果能合理地结合硬件资源来设计好多线程的并发,让系统处于合理的多线程调度模式,就能提高系统吞吐率,让系统具备高效的处理能力。
    从系统的外在表现来看,多线程能快速反馈用户的多种操作。如果只有单一的线程,那么其处理简单的逻辑可以做到又快又好,但有时,某些需求可能需要处理大量的数据,这时,如果还是分派给单一的线程来完成,就可能需要花费比较长的时间,这样对于该软件或应用程序的使用者来说,体验感会大打折扣。
    我们可以把一个线程处理数据的逻辑比喻成将城区南岸的车辆通过桥梁开至北岸的过程,每一辆车都是需要处理的一个小数据,如图1.7所示。
    图1.7 普通流量情况下的车辆过桥当车辆少时,车的通行的确畅顺,一座桥梁就足以应对。但当车辆多时,如果只有一座桥梁,可能就不能满足快速通行的需求,如图1.8所示。
    图1.8 拥挤的大车流过桥看到这种情形,许多读者可能会想到,如果南北两岸足够广阔,那么只需要多建几座桥梁就可以让大量的车辆分流,从而达到快速通行的目的。当建了几座桥梁后,这些拥堵的车辆就可以就近选择合适的桥梁分流通行,如图1.9所示。
    图1.9 多座桥梁的情况下,多通道解决大车流过桥其实,我们在进行数据处理时,如果发现一个线程处理能力不足而不能快速响应时,就可以通过类似“多建几座桥梁”的方式来帮我们处理数据,即可以引入多线程来处理这样的大数据。
    同时,使用多线程的软件或应用程序一般能在同一时间给予我们更多感知上面的满足。例如,我们在使用虚拟线程娱乐设备时,除了眼睛能观察到的动画外,一般会伴有当前情景下的背景音乐,甚至有些输入设备如震动手柄等会按情景震动起来,让用户沉浸式地进入一个虚拟场景。
    从系统的内在表现来看,多线程能更有效地利用系统资源,特别是CPU的计算和磁盘的存储I/O资源等。另外,使用多线程能让系统更好地分工,可以把一个大任务拆分成多个关联的小任务。例如,一个大数据文件集合的内容修改功能,拆分成读文本内容、修改文本内容、保存文本内容三个线程来独立处理,只要控制好先后顺序,就能达到多线程并发处理的目的。

    多线程处理一直是金融业务系统开发的核心内容。作者凭借自身多年银行金融系统后台开发经验,在传统独立自研金融类业务的基础上,结合互联网大数据技术,通过多个项目的系统架构实践,总结编写出本书。该书内容很好有价值,值得广大Java开发人员学习。——张夏 广电运通研究院研发经理 我和作者曾是国内某高等院校的同窗。他思维敏锐,富有创新精神。他对知识孜孜不倦的追求精神令我印象深刻。本书系统地讲解了Java多线程的各个基础知识点,并突出了重点和难点,值得。 ——陈友佳 中国总公司汕头市专卖局不错信息化 作者用通俗易懂的语言、丰富详尽的实例向读者展示了一幅Java编程之美与大数据处理之巧交织辉映的美好画卷。这无疑是Java开发人员在多线程与大数据处理领域的阅读书目之一。——黄海华 广州银行中心数据分析师 我曾与作者有过大数据相关项目的合作,对作者在Java与大数据方面的造诣印象深刻。在写作本书的过程中,作者系统地整理了自己多年来的工程实践经验,并融入了大量实例,深入浅出地阐述了极具实用价值的技术。  ——王晓舜 广州迈灵信息科技有限公司技术总监 作者系统地讲解了Java多线程的各个要点,并加入了大量的手绘图表,列举了相关的大数据实例,使本书具有重要的参考价值。诚心向从事该领域工作的人员本书。——刘顺鑫 深圳易听教育科技有限公司不错产品经理 作者在系统业务开发工作中谨慎认真的态度及富有创新的精神让我敬佩。也正是这些良好的品质,让他成为一名很好的大项目开发负责人。本书以理论与实践相结合的方式进行知识的讲解,因此我很好乐意向大家该书。——彭展谦 广州翰智软件有限公司流通与工程业务部总经理 早年合作期间,我就对作者的思维分析、表达能力及编程技巧的掌握都很好认可。本书运用了大量的实例来进行深入浅出的说明,内容充实而生动,处处体现了Java语言的魅力。我很好乐意向大家本书。——林正晓 中国移动通信集团广东有限公司湛江分公司不错系统项目管理师 我曾与作者有过不少项目接触,也曾向作者提出过关于大数据的一些问题,对于这些问题,作者都能够快速地运用合适的技术方案加以解决。当我得知其要出版有关大数据处理的书籍时,已迫不及待要一探究竟,同时希望广大读者在读完此书后也能收益颇丰。 ——赖嘉文 东莞市微享时代网络科技有限公司技术总监

    售后保障

    最近浏览

    猜你喜欢

    该商品在当前城市正在进行 促销

    注:参加抢购将不再享受其他优惠活动

    x
    您已成功将商品加入收藏夹

    查看我的收藏夹

    确定

    非常抱歉,您前期未参加预订活动,
    无法支付尾款哦!

    关闭

    抱歉,您暂无任性付资格

    此时为正式期SUPER会员专享抢购期,普通会员暂不可抢购