当前位置:首页 > Java > Java编程pdf电子书下载
《Java并发编程的艺术》电子书封面

Java并发编程的艺术

  • 发布时间:2019年12月04日 08:51:18
  • 作者:方腾飞,魏鹏,程晓明
  • 大小:148 MB
  • 类别:Java编程电子书
  • 格式:PDF
  • 版本:高清原版
  • 评分:7.6

    Java并发编程的艺术 PDF 高清原版

      给大家带来的一篇关于Java编程相关的电子书资源,介绍了关于Java、并发编程方面的内容,本书是由机械工业出版社出版,格式为PDF,资源大小148 MB,方腾飞,魏鹏,程晓明编写,目前豆瓣、亚马逊、当当、京东等电子书综合评分为:7.5分

      Tags:java 并发编程 

      内容介绍

      阿里集团和1号店杰出技术性权威专家编写,Java并发编程行业的压卷之作,內容在InfoQ等社群营销获得高宽比认同

      从JDK源代码、JVM、CPU等多方位全方位分析和解读Java并发编程的架构、原理和关键技术

      随之互联网时代的到来,程序猿将会每日要解决几十个TB的信息,怎么让程序流程迅速且安全性地解决各种各样互联网大数据,就必须把握不一样的并发编程实体模型和并发编程方法。客户的一个点一下,必须在ms级解决完好几个每日任务,一样必须并发编程的参加。

      并发编程是Java語言的关键特点之一,在Java服务平台上出示了很多基础的并发作用来輔助开发设计c#多线程应用程序。殊不知,这种相对性底层的并发作用与顶层应用程序的并发词义中间并找不到一种简易而形象化的投射关联。因而,怎样在Java并发应用程序中恰当且高效率地应用这种作用就变成Java开发者的关心重中之重。
      《Java并发编程的艺术》更是以便处理这一难题而写的。书中选用由浅入深的解读方法,从并发编程的底层保持体制下手,逐渐介绍了在设计方案Java并发程序流程时各种各样关键的技术性、策略模式与运用,另外加上丰富多彩的实例编码,促使开发者可以迅速地理解Java并发编程的步聚,紧紧围绕着Java服务平台的基本并发作用迅速地搭建规模性的并发应用程序。

      大量精采,跳转知名品牌店查寻>>

      第1章介绍Java并发编程的挑戰,会向用户表明将会会碰到什么难题,及其怎样处理。第2章Java并发编程的底层保持原理,从CPU和JVM2个方面分析。第3章详尽深层次介绍了Java的运行内存实体模型。第4章从介绍多线程技术产生的益处刚开始,叙述了怎样起动和停止进程及其进程的情况,详尽论述了c#多线程中间开展通讯的基础方法和等候/通告經典范式。第5章介绍Java并发包中与锁有关的API和部件,及其这种API和部件的应用方法和保持关键点。第6章介绍了Java中的绝大多数并发器皿以及保持原理。第7章介绍了Java中的原子操作类,并得出一些案例。第8章介绍了Java中出示的许多并发工具类。第9章介绍了Java中的线程池保持原理和应用提议。第10章介绍了Executor架构的总体构造和组员部件。第11章介绍好多个并发编程的实战演练与并发编程难题清查。

      目录

      • 前言
      • 第1章并发编程的挑战
      • 1.1上下文切换
      • 1.1.1多线程一定快吗
      • 1.1.2测试上下文切换次数和时长
      • 1.1.3如何减少上下文切换
      • 1.1.4减少上下文切换实战
      • 1.2死锁
      • 1.3资源限制的挑战
      • 1.4本章小结
      • 第2章Java并发机制的底层实现原理
      • 2.1volatile的应用
      • 2.2synchronized的实现原理与应用
      • 2.2.1Java对象头
      • 2.2.2锁的升级与对比
      • 2.3原子操作的实现原理
      • 2.4本章小结
      • 第3章Java内存模型
      • 3.1Java内存模型的基础
      • 3.1.1并发编程模型的两个关键问题
      • 3.1.2Java内存模型的抽象结构
      • 3.1.3从源代码到指令序列的重排序
      • 3.1.4并发编程模型的分类
      • 3.1.5happensbefore简介
      • 3.2重排序
      • 3.2.1数据依赖性
      • 3.2.2asifserial语义
      • 3.2.3程序顺序规则
      • 3.2.4重排序对多线程的影响
      • 3.3顺序一致性
      • 3.3.1数据竞争与顺序一致性
      • 3.3.2顺序一致性内存模型
      • 3.3.3同步程序的顺序一致性效果
      • 3.3.4未同步程序的执行特性
      • 3.4volatile的内存语义
      • 3.4.1volatile的特性
      • 3.4.2volatile写读建立的happensbefore关系
      • 3.4.3volatile写读的内存语义
      • 3.4.4volatile内存语义的实现
      • 3.4.5JSR133为什么要增强volatile的内存语义
      • 3.5锁的内存语义
      • 3.5.1锁的释放获取建立的happensbefore关系
      • 3.5.2锁的释放和获取的内存语义
      • 3.5.3锁内存语义的实现
      • 3.5.4concurrent包的实现
      • 3.6final域的内存语义
      • 3.6.1final域的重排序规则
      • 3.6.2写final域的重排序规则
      • 3.6.3读final域的重排序规则
      • 3.6.4final域为引用类型
      • 3.6.5为什么final引用不能从构造函数内"溢出"
      • 3.6.6final语义在处理器中的实现
      • 3.6.7JSR133为什么要增强f?inal的语义
      • 3.7happensbefore
      • 3.7.1JMM的设计
      • 3.7.2happensbefore的定义
      • 3.7.3happensbefore规则
      • 3.8双重检查锁定与延迟初始化
      • 3.8.1双重检查锁定的由来
      • 3.8.2问题的根源
      • 3.8.3基于volatile的解决方案
      • 3.8.4基于类初始化的解决方案
      • 3.9Java内存模型综述
      • 3.9.1处理器的内存模型
      • 3.9.2各种内存模型之间的关系
      • 3.9.3JMM的内存可见性保证
      • 3.9.4JSR133对旧内存模型的修补
      • 3.10本章小结
      • 第4章Java并发编程基础
      • 4.1线程简介
      • 4.1.1什么是线程
      • 4.1.2为什么要使用多线程
      • 4.1.3线程优先级
      • 4.1.4线程的状态
      • 4.1.5Daemon线程
      • 4.2启动和终止线程
      • 4.2.1构造线程
      • 4.2.2启动线程
      • 4.2.3理解中断
      • 4.2.4过期的suspend()、resume()和stop()
      • 4.2.5安全地终止线程
      • 4.3线程间通信
      • 4.3.1volatile和synchronized关键字
      • 4.3.2等待/通知机制
      • 4.3.3等待/通知的经典范式
      • 4.3.4管道输入/输出流
      • 4.3.5Thread.join()的使用
      • 4.3.6ThreadLocal的使用
      • 4.4线程应用实例
      • 4.4.1等待超时模式
      • 4.4.2一个简单的数据库连接池示例
      • 4.4.3线程池技术及其示例
      • 4.4.4一个基于线程池技术的简单Web服务器
      • 4.5本章小结
      • 第5章Java中的锁
      • 5.1Lock接口
      • 5.2队列同步器
      • 5.2.1队列同步器的接口与示例
      • 5.2.2队列同步器的实现分析
      • 5.3重入锁
      • 5.4读写锁
      • 5.4.1读写锁的接口与示例
      • 5.4.2读写锁的实现分析
      • 5.5LockSupport工具
      • 5.6Condition接口
      • 5.6.1Condition接口与示例
      • 5.6.2Condition的实现分析
      • 5.7本章小结
      • 第6章Java并发容器和框架
      • 6.1ConcurrentHashMap的实现原理与使用
      • 6.1.1为什么要使用ConcurrentHashMap
      • 6.1.2ConcurrentHashMap的结构
      • 6.1.3ConcurrentHashMap的初始化
      • 6.1.4定位Segment
      • 6.1.5ConcurrentHashMap的操作
      • 6.2ConcurrentLinkedQueue
      • 6.2.1ConcurrentLinkedQueue的结构
      • 6.2.2入队列
      • 6.2.3出队列
      • 6.3Java中的阻塞队列
      • 6.3.1什么是阻塞队列
      • 6.3.2Java里的阻塞队列
      • 6.3.3阻塞队列的实现原理
      • 6.4Fork/Join框架
      • 6.4.1什么是Fork/Join框架
      • 6.4.2工作窃取算法
      • 6.4.3Fork/Join框架的设计
      • 6.4.4使用Fork/Join框架
      • 6.4.5Fork/Join框架的异常处理
      • 6.4.6Fork/Join框架的实现原理
      • 6.5本章小结
      • 第7章Java中的13个原子操作类
      • 7.1原子更新基本类型类
      • 7.2原子更新数组
      • 7.3原子更新引用类型
      • 7.4原子更新字段类
      • 7.5本章小结
      • 第8章Java中的并发工具类
      • 8.1等待多线程完成的CountDownLatch
      • 8.2同步屏障CyclicBarrier
      • 8.2.1CyclicBarrier简介
      • 8.2.2CyclicBarrier的应用场景
      • 8.2.3CyclicBarrier和CountDownLatch的区别
      • 8.3控制并发线程数的Semaphore
      • 8.4线程间交换数据的Exchanger
      • 8.5本章小结
      • 第9章Java中的线程池
      • 9.1线程池的实现原理
      • 9.2线程池的使用
      • 9.2.1线程池的创建
      • 9.2.2向线程池提交任务
      • 9.2.3关闭线程池
      • 9.2.4合理地配置线程池
      • 9.2.5线程池的监控
      • 9.3本章小结
      • 第10章Executor框架
      • 10.1Executor框架简介
      • 10.1.1Executor框架的两级调度模型
      • 10.1.2Executor框架的结构与成员
      • 10.2ThreadPoolExecutor详解
      • 10.2.1FixedThreadPool详解
      • 10.2.2SingleThreadExecutor详解
      • 10.2.3CachedThreadPool详解
      • 10.3ScheduledThreadPoolExecutor详解
      • 10.3.1ScheduledThreadPoolExecutor的运行机制
      • 10.3.2ScheduledThreadPoolExecutor的实现
      • 10.4FutureTask详解
      • 10.4.1FutureTask简介
      • 10.4.2FutureTask的使用
      • 10.4.3FutureTask的实现
      • 10.5本章小结
      • 第11章Java并发编程实践
      • 11.1生产者和消费者模式
      • 11.1.1生产者消费者模式实战
      • 11.1.2多生产者和多消费者场景
      • 11.1.3线程池与生产消费者模式
      • 11.2线上问题定位
      • 11.3性能测试
      • 11.4异步任务池
      • 11.5本章小结

      读书笔记

      Java并发编程this逃逸问题总结

      this逃逸是指在构造函数返回之前其他线程就持有该对象的引用. 调用尚未构造完全的对象的方法可能引发令人疑惑的错误, 因此应该避免this逃逸的发生.

      this逃逸经常发生在构造函数中启动线程或注册监听器时, 如:

      public class ThisEscape { 
        public ThisEscape() { 
          new Thread(new EscapeRunnable()).start(); 
          // ... 
        } 
         
        private class EscapeRunnable implements Runnable { 
          @Override 
          public void run() { 
            // 通过ThisEscape.this就可以引用外围类对象, 但是此时外围类对象可能还没有构造完成, 即发生了外围类的this引用的逃逸 
          } 
        } 
      } 

      解决办法

      public class ThisEscape { 
        private Thread t; 
        public ThisEscape() { 
          t = new Thread(new EscapeRunnable()); 
          // ... 
        } 
         
        public void init() { 
          t.start(); 
        } 
         
        private class EscapeRunnable implements Runnable { 
          @Override 
          public void run() { 
            // 通过ThisEscape.this就可以引用外围类对象, 此时可以保证外围类对象已经构造完成 
          } 
        } 
      } 

      以上就是小编本次整理的全部内容,感谢你对码农之家的支持。

      以上就是本次介绍的Java编程电子书的全部相关内容,希望我们整理的资源能够帮助到大家,感谢大家对码农之家的支持。

      上一篇:运营本源:5分钟互联网运营入门晋升点拨课

      下一篇:你凭什么做好互联网:从技术思维到商业逻辑

      查看更多
      读者心得
      8小时17分钟前回答

      详解java并发编程(2) --Synchronized与Volatile区别

      1 Synchronized 在多线程并发中synchronized一直是元老级别的角色。利用synchronized来实现同步具体有一下三种表现形式: 对于普通的同步方法,锁是当前实例对象。 对于静态同步方法,锁是当前类的class对象。 对于同步方法块,锁是synchronized括号里配置的对象。 当一个代码,方法或者类被synchronized修饰以后。当一个线程试图访问同步代码块的时候,它首先必须得到锁,退出或抛出异常的时候必须释放锁。那么这样做有什么好处呢? 它主要确保多个线程在同一时刻,只能有一个线程处于方法或者同步块中,它保证了线程对变量的可见性和排他性。 1.1 如何实现排他性 如下图所示,一个普通的方法会有一个左……

      码农之家

      廖正浩 提供上传

      资源
      14
      粉丝
      42
      喜欢
      160
      评论
      9

      Copyright 2018-2021 www.xz577.com 码农之家

      版权投诉 / 书籍推广:520161757@qq.com