标签分类 热门分类
当前位置:首页 > 程序设计电子书 > Java9电子书网盘下载
Java 9并发编程实战

Java 9并发编程实战 原书完整版电子书

官方价: 49.99

更 新:

Java 9并发编程实战 (pdf、epub、mobi、azw3)下载

下载地址:https://pan.baidu.com/s/16JLP8oFSJyUsp7jTOFX4F

分享码:0y94

给大家带来的一篇关于Java9相关的电子书资源,介绍了关于Java9、并发编程、实战方面的内容,本书是由人民邮电出版社出版,格式根据源资源分为PDF、epub、mobi、azw3其中一种或多种格式,资源大小15.6 MB,哈维尔·费尔南德兹·冈萨雷斯编写,目前豆瓣、亚马逊、当当、京东等电子书综合评分为:7.3,更多相关的学习资源可以参阅 程序设计电子书Java电子书Java视频、等栏目。

Java 9并发编程实战 PDF

根据Java 9的“零不正确反跳(Zero Bug Bounce)”里程碑式版本号撰写 详细的实例开发设计流程和编码,给你面对执行程序全过程,分析原理、体会关键点 根据学习培训《Java 9并发编程实战》,读者能够掌握用并行处理和反应式流解决规模性uci数据集的方式 ,从而把握流的建立以及正中间态和终态的实际操作,*终可以以并行处理和函数式的方式 来解决规模性uci数据集。《Java 9并发编程实战》围绕Java 9并发类库和体制,循序渐进地解读了Java 9并发编程的专业知识,并且以实例的方式呈现怎样在真正要求中应用这种类库。 《Java 9并发编程实战》共11章。第1章到第4章关键详细介绍进程管理方法、Java同歩编码的基础体制、进程间同歩的专用工具、进程电动执行机构等內容;第5章详细介绍fork/join框架结构的使用方法;第6章详细介绍流的有关专业知识及其Java 9中用于保持反应式流的插口;第7章到第9章详细介绍怎么使用Java出示的并发数据结构,及其怎样依据必须拓展Java并发API中常见的类等內容;第10章和第11章就一些定义和开发设计常见问题开展扩展,包含并发统计数据、网络监控并发另一半等內容。 《Java 9并发编程实战》得出了详细的实例开发设计流程和编码,能够让读者面对执行程序全过程,分析原理、体会关键点,合适对Java编程很感兴趣的读者阅读文章。

目录

  • 第1章 线程管理 1
  • 1.1 简介 1
  • 1.2 线程的创建、运行和设置 2
  • 1.3 线程中断 8
  • 1.4 控制线程中断 11
  • 1.5 线程的休眠和唤醒 14
  • 1.6 等待线程执行结束 16
  • 1.7 守护线程的创建与运行 19
  • 1.8 处理线程中的不可控异常 23
  • 1.9 使用线程本地变量 26
  • 1.10 线程分组及线程组中不可控异常的处理 29
  • 1.11 使用工厂创建线程 33
  • 第 2章 线程同步基础 37
  • 2.1 简介 37
  • 2.2 方法同步 38
  • 2.3 在同步代码块中使用条件 46
  • 2.4 在同步代码块中使用锁机制 51
  • 2.5 用读/写锁保护同步代码块 57
  • 2.6 在一个锁中使用多个条件 62
  • 2.7 高阶知识:StampedLock的使用 70
  • 第3章 线程同步工具 78
  • 3.1 简介 78
  • 3.2 控制对资源的一个或多个副本的并发访问 79
  • 3.3 等待多个并发事件 85
  • 3.4 在指定状态点同步任务 90
  • 3.5 运行阶段性并发任务 98
  • 3.6 阶段性并发任务中阶段转变的控制 108
  • 3.7 两个并发任务间的数据交换 114
  • 3.8 异步地完成和关联任务 118
  • 第4章 线程执行器 128
  • 4.1 简介 128
  • 4.2 创建一个线程执行器并实现其拒绝策略 129
  • 4.3 在一个执行器里执行任务并返回结果 136
  • 4.4 运行多个任务并处理第 一个返回结果 140
  • 4.5 运行多个任务并处理全部返回结果 146
  • 4.6 在执行器内延迟运行任务 150
  • 4.7 在执行器内周期性地运行任务 154
  • 4.8 在执行器内取消任务 157
  • 4.9 在执行器内控制任务的完成 160
  • 4.10 在执行器内分离任务的启动并处理返回结果 164
  • 第5章 fork/join框架 171
  • 5.1 简介 171
  • 5.2 创建一个fork/join池 173
  • 5.3 合并任务的执行结果 180
  • 5.4 异步地运行任务 189
  • 5.5 在任务中抛出异常 196
  • 5.6 取消一个任务 200
  • 第6章 并行反应式流 208
  • 6.1 简介 208
  • 6.2 使用不同的源创建流 210
  • 6.3 归约一个流的元素 217
  • 6.4 收集流中的元素 224
  • 6.5 把一个动作应用到流的每个元素上 231
  • 6.6 过滤流中的元素 234
  • 6.7 转换流中的元素 237
  • 6.8 排序流中的元素 241
  • 6.9 在流中的元素上验证条件 244
  • 6.10 在反应式流上反应式编程 248
  • 第7章 并发集合 256
  • 7.1 简介 256
  • 7.2 运用非阻塞线程安全的双端队列 257
  • 7.3 运用阻塞线程安全的双端队列 262
  • 7.4 运用按优先级排序的阻塞线程安全队列 265
  • 7.5 运用带延迟元素的线程安全列表 271
  • 7.6 运用线程安全的跳表 276
  • 7.7 运用线程安全的HashMap 281
  • 7.8 运用原子性变量 287
  • 7.9 运用原子性数组 294
  • 7.10 运用volatile关键字 298
  • 7.11 运用变量句柄 302
  • 第8章 自定义并发类 307
  • 8.1 简介 307
  • 8.2 自定义ThreadPoolExecutor类 308
  • 8.3 实现一个基于优先级的Executor类 313
  • 8.4 实现ThreadFactory接口来生成自定义线程 317
  • 8.5 在一个Executor对象中使用ThreadFactory 322
  • 8.6 自定义在一个周期调度性线程池中运行的任务 324
  • 8.7 实现一个ThreadFactory以生成fork/join框架的自定义线程 331
  • 8.8 自定义运行于fork/join框架中的任务 338
  • 8.9 实现一个自定义Lock类 342
  • 8.10 实现一个基于优先级的传递队列 348
  • 8.11 实现自己的原子性对象 359
  • 8.12 实现自己的流生成器 363
  • 8.13 实现自己的异步流 369
  • 第9章 并发程序的测试 378
  • 9.1 简介 378
  • 9.2 监测Lock接口 379
  • 9.3 监测Phaser类 383
  • 9.4 监测Executor框架 387
  • 9.5 监测fork/join任务池 390
  • 9.6 监测流 395
  • 9.7 输出有效日志信息 397
  • 9.8 利用FindBugs分析并发程序代码 402
  • 9.9 使用Eclipse调试并发程序代码 406
  • 9.10 使用NetBeans调试并发程序代码 408
  • 9.11 使用MultithreadedTC调试并发程序代码 413
  • 9.12 使用JConsole监测 416
  • 第 10章 附加信息 421
  • 10.1 简介 421
  • 10.2 在Executor框架中处理Runnable对象的结果 421
  • 10.3 在ForkJoinPool类中处理未控制的异常 427
  • 10.4 使用线程安全的阻塞队列在生产者和消费者之间进行交互 431
  • 10.5 监测Thread类 436
  • 10.6 监测Semaphore类 440
  • 10.7 生成并发随机数 443
  • 第 11章 并发编程设计 445
  • 11.1 简介 445
  • 11.2 尽可能使用不可变对象 446
  • 11.3 对锁排序以避免死锁 449
  • 11.4 使用原子变量替代同步 451
  • 11.5 尽可能短地持有锁 455
  • 11.6 委托执行器管理线程 459
  • 11.7 使用并发数据结构替代手动编程 462
  • 11.8 使用延迟初始化预防问题 464
  • 11.9 使用fork/join框架替代执行器 466
  • 11.10 避免在锁中使用阻塞操作 470
  • 11.11 避免使用已弃用的方法 472
  • 11.12 使用执行器替代线程组 473
  • 11.13 使用流处理大数据集 474
  • 11.14 其他提示和技巧 479

上一篇:Istio实战指南  下一篇:Linux哲学

展开 +

收起 -

Java9 相关电子书
Java9 学习笔记
网友NO.382156

java9迁移注意问题总结

序 本文主要研究下迁移到java9的一些注意事项。 迁移种类 1、代码不模块化,先迁移到jdk9上,好利用jdk9的api 2、代码同时也模块化迁移 几点注意事项 不可读类 比如sun.security.x509,在java9中归到java.base模块中,但是该模块没有export该package 可以通过运行的时候添加--add-exports java.base/sun.security.x509=ALL-UNNAMED来修改exports设定 内部类 比如sun.misc.Unsafe,原本只想让oracle jdk team来使用,不过由于这些类应用太广泛了,为了向后兼容,java9做了妥协,只是将这些类归到了jdk.unsupported模块,并没有限定其可读性。 ➜ ~ java -d jdk.unsupportedjdk.unsupported@9exports com.sun.nio.fileexports sun.miscexports sun.reflectrequires java.base mandatedopens sun.miscopens sun.reflect 删除的类 java9删除了sun.misc.BASE64Encoder,这种情况只能改用其他api,比如java.util.Base64 classpath vs module-path java9引入了模块系统,同时自身的jdk也模块化了,引入了module-path,来屏蔽classpath,也就是说在java9优先使用module-path,毕竟jdk本身都模块化了,应用本身没有模块化的话,java9通过unnamed modules及automatic modules机制来隐式模块化,当然classpath在java9上还能继续使用,比如配合module-path使用等。 没有模块化的jar在classpath会被归到unnamed modules;在module-path则会被自动创建为automatic modules(一个automatic modules会声明transi……

网友NO.573428

9个java数组常用操作实例

数组的特点: 数组是一种最简单的复合数据类型,它是有序数据的集合,数组中的每个元素具有相同的数据类型,可以用一个统一的数组名和不同的下标来唯一确定数组中的元素。根据数组的维度,可以将其分为一维数组、二维数组和多维数组等。 总的来说,数组具有以下特点: 数组可以是一维数组、二维数组或多维数组。 数值数组元素的默认值为 0,而引用元素的默认值为 null。 交错数组是数组的数组,因此,它的元素是引用类型,初始化为 null。交错数组元素的维度和大小可以不同。 数组的索引从 0 开始,如果数组有 n 个元素,那么数组的索引是从 0 到(n-1)。 数组元素可以是任何类型,包括数组类型。 数组类型是从抽象基类 Array 派生的引用类型。 定义数组有三种方法。 第一种是定义了一个数组,并且指定了数组的长度,我们这里称它为动态定义。 第二种是直接初始化数组内容 第三种在分配内存空间的同时还初始化了值。 一、定义一个Java数组 String[] aArray = new String[5]; String[] bArray = {"a","b","c", "d", "e"}; String[] cArray = new String[]{"a","b","c","d","e"}; 二、打印Java数组中的元素 Java中数组的引用和值得区别,第三行直接打印intArray,输出的是乱码,因为intArray仅仅是一个地址引用。第4行输出的则是真正的数组值,因为它经……

网友NO.261663

23种设计模式(19)java责任链模式

23种设计模式第十九篇:java责任链模式 定义:使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。 类型:行为类模式 类图: 首先来看一段代码: public void test(int i, Request request){ if(i==1){ Handler1.response(request); }else if(i == 2){ Handler2.response(request); }else if(i == 3){ Handler3.response(request); }else if(i == 4){ Handler4.response(request); }else{ Handler5.response(request); } } 代码的业务逻辑是这样的,方法有两个参数:整数i和一个请求request,根据i的值来决定由谁来处理request,如果i==1,由Handler1来处理,如果i==2,由Handler2来处理,以此类推。 在编程中,这种处理业务的方法非常常见,所有处理请求的类有if…else…条件判断语句连成一条责任链来对请求进行处理,相信大家都经常用到。这种方法的优点是非常直观,简单明了,并且比较容易维护,但是这种方法也存在着几个比较令人头疼的问题: 代码臃肿: 实际应用中的判定条件通常不是这么简单地判断是否为1或者是否为2,也许需要复杂的计算,也许需要查询数据库等等,这就会有很多额外的代码,如果判断条件再比较多,那么这个if…else…语句基本上就没法看了。 耦合度高: 如果我们想继续添……

网友NO.353619

让你5分钟掌握9个JavaScript小技巧

译者按:技巧虽好、重在掌握并使用起来! 原文:Learn these neat JavaScript tricks in less than 5 minutes 译者:Fundebug 为了保证可读性,本文采用意译而非直译。另外,本文版权归原作者所有,翻译仅用于学习。 1. 删除数组尾部元素 一个简单的用来清空或则删除数组尾部元素的简单方法就是改变数组的length属性值。 const arr = [11, 22, 33, 44, 55, 66];// truncantingarr.length = 3;console.log(arr); //= [11, 22, 33]// clearingarr.length = 0;console.log(arr); //= []console.log(arr[2]); //= undefined 2.使用对象解构来模拟命名参数 如果你需要将一系列可选项作为参数传入函数,那么你也许倾向于使用了一个对象(Object)来定义配置(Config)。 doSomething({ foo: 'Hello', bar: 'Hey!', baz: 42 });function doSomething(config) {const foo = config.foo !== undefined ? config.foo : 'Hi';const bar = config.bar !== undefined ? config.bar : 'Yo!'; const baz = config.baz !== undefined ? config.baz : 13; // ...} 这是一个陈旧、但是很有效的方法,它模拟了JavaScript中的命名参数。不过呢,在doSomething中处理config的方式略显繁琐。在ES2015中,你可以直接使用对象解构。 function doSomething({ foo = 'Hi', bar = 'Yo!', baz = 13 }) { // ...} 如果你想让这个参数是可选的,也很简单。 function doSomething({ foo = 'Hi', bar = 'Yo!', baz = 13 } = {}) { // ...} 3. 使用对象解构来处理数组 可以使用对象解……

码小辫

码小辫 发起

资源
30
粉丝
28
喜欢
399
评论
20

    Copyright 2018-2019 xz577.com 码农之家

    版权责任说明