Java并发实现原理:JDK源码剖析 PDF 高质量版

  • 更新时间:
  • 3320人关注
  • 点击下载

Java并发实现原理:JDK源码剖析》是一本关于Java并发相关的电子书资源,介绍了关于Java并发、JDK、源码剖析方面的内容,本书是由电子工业出版社出版,格式为PDF,资源大小96 MB,余春龙编写,目前豆瓣、亚马逊、当当、京东等综合评分为:9.6分,我们还提供了样章在线阅读,一起来看下具体内容。

资源详情相关推荐
《Java并发实现原理:JDK源码剖析》封面
  • 在线阅读
  • 出版社:电子工业出版社
  • 作者:余春龙
  • 大小:96 MB
  • 类别:Java并发
  • 热度:898
  • JavaScript忍者秘籍
  • 征服Ajax:Web.2.0快速入门与项目实践(Java)
  • Java Web开发就该这样学
  • JavaScript函数式编程指南
  • 《Java EE企业级应用开发教程》课后答案
  • 编辑推荐

    本书全面系统地讲解了Java并发实现原理,从基础的多线程知识讲起,全面介绍了Concurrent包的每个部分,详细分析多线程背后的原理,同时从源码角度进行了剖析,为不可多得的一本好书。

    内容简介

    本书全面而系统地剖析了Java Concurrent包中的每一个部分,对并发的实现原理进行了深刻的探讨。全书分为8章,第1章从*基础的多线程知识讲起,理清多线程中容易误解的知识点,探究背后的原理,包括内存重排序、happen-before、内存屏障等;第2~8章,从简单到复杂,逐个剖析Concurrent包的每个部分,包括原子类、锁、同步工具类、并发容器、线程池、ForkJoinPool、CompletableFuture共7个部分。本书遵循层层递进的逻辑,后一章建立在前一章的知识点基础之上,建议读者由浅入深,逐步深入阅读。本书适合有一定Java开发经验的工程师、架构师阅读。通过本书,读者可以对多线程编程形成一个“深刻而直观”的认识,而不是再仅仅停留在概念和理论层面。

    作者简介

    中科院软件所计算机硕士毕业。热衷于高并发高可用架构、业务建模、领域驱动设计,在十年的工作中,经历过游戏、社交、广告、电商等各种类型的项目,积累了较丰富的工程经验。

    目录

    • 第1章 多线程基础 / 1
    • 第2章 Atomic类 / 29
    • AtomicReferenceArray / 38
    • 第3章 Lock与Condition / 49
    • 第4章 同步工具类 / 83
    • 第5章 并发容器 / 104
    • 第6章 线程池与Future / 163
    • 第7章 ForkJoinPool / 190
    • addSubmission / 206
    • 第8章 CompletableFuture / 226
    展开阅读
    精选笔记1:JAVA JDK8 List分组获取第一个元素的方法

    2小时26分钟前回答

    概述

    在JAVA JDK8 List分组的实现和用法一文中介绍了JDK 8如何对list进行分组,但是没有提到如何在分组后,获取每个分组的第一个元素。其实这个也很简单,代码如下:

    package test;
    import com.alibaba.fastjson.JSON;
    import com.alibaba.fastjson.serializer.SerializerFeature;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Map;
    import java.util.stream.Collectors;
    public class ListGroupFindFirstTest3 {
      public static void main(String[] args) {
        List<Coupon> couponList = new ArrayList<>();
        Coupon coupon1 = new Coupon(1,100,"优惠券1");
        Coupon coupon2 = new Coupon(2,200,"优惠券2");
        Coupon coupon3 = new Coupon(3,300,"优惠券3");
        Coupon coupon4 = new Coupon(3,400,"优惠券4");
        couponList.add(coupon1);
        couponList.add(coupon2);
        couponList.add(coupon3);
        couponList.add(coupon4);
        Map<Integer, Coupon> resultList = couponList.stream().collect(Collectors.groupingBy(Coupon::getCouponId,Collectors.collectingAndThen(Collectors.toList(),value->value.get(0))));
        System.out.println(JSON.toJSONString(resultList, SerializerFeature.PrettyFormat));
      }
    }
    package test;
    public class Coupon {
      private Integer couponId;
      private Integer price;
      private String name;
      public Coupon(Integer couponId, Integer price, String name) {
        this.couponId = couponId;
        this.price = price;
        this.name = name;
      }
      public Integer getCouponId() {
        return couponId;
      }
      public void setCouponId(Integer couponId) {
        this.couponId = couponId;
      }
      public Integer getPrice() {
        return price;
      }
      public void setPrice(Integer price) {
        this.price = price;
      }
      public String getName() {
        return name;
      }
      public void setName(String name) {
        this.name = name;
      }
    }

    需要借助Collectors.collectingAndThen方法,对组内的元素进行处理,这里是获取第一个元素。

    代码输出结果如下:

    {   1:{
      "couponId":1,
      "name":"优惠券1",
      "price":100
     },
     2:{
      "couponId":2,
      "name":"优惠券2",
      "price":200
     },
     3:{
      "couponId":3,
      "name":"优惠券3",
      "price":300
     }
    }

    总结

    以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对码农之家的支持。如果你想了解更多相关内容请查看下面相关链接

    展开阅读

    Java并发相关资源

    • OSGi与Equinox:创建高度模块化的Java系统

      OSGi与Equinox:创建高度模块化的Java系统

      阅读本书,首先你很快就会使用Eclipse bundle工具创建第一个基于OSGi的系统,进而转向复杂的产品开发。接下来,你将掌握一些用于创建具有特殊模块化、高效性和可维护性系统的最佳实践和技

      大小:21.8 MBJava

      立即下载
    • java语言程序设计:基础篇(英文第8版)

      java语言程序设计:基础篇(英文第8版)

      《Java语言程序设计:基础篇》是机械工业出版社2011年11月10日出版的图书。 目录 Chapter 1 Introduction to Computers,Programs,and Java Chapter 2 Elementary Programming Chapter 3 Selections Chapter 4 Loops Chapter 5 Methods Chapter 6 Single-Dimensional Arrays Chapter 7 Multidimensional Array

      大小:10.6 MBjava语言

      立即下载
    • 阿里巴巴Java开发手册

      阿里巴巴Java开发手册

      这本书愿景是码出高效,码出质量,提炼阿里巴巴集团技术团队的集体编程经验和软件设计智慧,浓缩成为立体的编程规范和实践,适合计算机相关行业的管理者和研发人员、高等院校的计算机专业师生、求职者等阅读

      大小:27.5 MBJava开发

      立即下载
    • 面向对象软件工程:使用UML、模式与 Java

      面向对象软件工程:使用UML、模式与 Java

      《面向对象软件工程:使用UML、模式与Java(第3版)》由b.bruegge和a.h.dutoit编写的,是卡耐基梅隆大学(cmu)高年级本科生和研究生的教材。在第3版本中,作者以循序渐进的方式给出一个完

      大小:59.5 MB面向对象

      立即下载
    • 解密搜索引擎技术实战:Lucene Java精华版(第3版)

      解密搜索引擎技术实战:Lucene Java精华版(第3版)

      本书总结搜索引擎相关理论与实际解决方案,并给出了Java实现,包括总体介绍部分、爬虫部分、自然语言处理部分、全文检索部分以及相关案例分析,欢迎下载

      大小:135.6 MB搜索引擎

      立即下载
    • 软件开发综合实践指导教程:JAVA WEB应用

      软件开发综合实践指导教程:JAVA WEB应用

      Java Web应用技术是当今最主流的Web程序开发技术之一。目前无论是高校的计算机专业,还是IT培训学校都将Java Web应用技术作为教学内容之一,这对于培养学生的计算机应用能力具有重要的意义

      大小:69.9 MB软件开发

      立即下载

    学习笔记

    22小时25分钟前回答

    简谈java并发FutureTask的实现

    概述 在使用java多线程解决问题的时候,为了提高效率,我们常常会异步处理一些计算任务并在最后异步的获取计算结果,这个过程的实现离不开Future接口及其实现类FutureTask。FutureTask类实现了Runnable, Future接口,接下来我会通过源码对该类的实现进行详解。 使用 我们先看下FutureTask中的主要方法如下,可以看出FutureTask实现了任务及异步结果的集合功能。看到这块的方法,大家肯定会有疑问,Runnable任务的run方法返回空,FutureTask如何依靠该方法获取线程异步执行结果,这个问题,我们在下面给大家介绍。 //以下五个方法实现接口Future中方法public boolean isCancelled(); public boolean isDone(); public boolean cancel();publ……

    13小时45分钟前回答

    Java并发系列之Semaphore源码分析

    Semaphore(信号量)是JUC包中比较常用到的一个类,它是AQS共享模式的一个应用,可以允许多个线程同时对共享资源进行操作,并且可以有效的控制并发数,利用它可以很好的实现流量控制。Semaphore提供了一个许可证的概念,可以把这个许可证看作公共汽车车票,只有成功获取车票的人才能够上车,并且车票是有一定数量的,不可能毫无限制的发下去,这样就会导致公交车超载。所以当车票发完的时候(公交车以满载),其他人就只能等下一趟车了。如果中途有人下车,那么他的位置将会空闲出来,因此如果这时其他人想要上车的话就又可以获得车票了。利用Semaphore可以实现各种池,我们在本篇末尾将会动手……