昨天晚上终于阅读完《java高并发编程详解》这本书。get到了不少新姿势。这本书是在我看完《深入理解java虚拟机》之后才开始学习的,有些知识点在java虚拟机书中有过讲解,在看编程详解时又复习了一遍,感觉jvm在并发编程的方面确实做了很多优化,从指令集到编程规范,指导我们进行安全高效的并发编程,尤其是Sychronized的不断优化,并发包的使用,还有线程池的集成。无不体现java在并发编程时做的努力。

并发和并行两个概念是java编程中经常遇到的概念。多线程同时运行的条件下,如果有资源争用,那么就是并发,否则就是并行。

书中详细讲解了线程和进程的关系,讲解了线程的5大状态:new runnable running blocking dead。

五种状态之间有状态转换。而blocking和running状态的线程可以被打断,即通过调用 Thread.interrrupt()的方法主动中断睡眠或者资源等待。

Thread的yield(),interrrupt(),sleep(),join()方法是线程自带的方法,分别是放弃锁资源,cpu资源;中断线程当前状态,睡眠(不放弃资源),等待当前线程执行完之后执行(放弃资源)。

对象Object的wait(),notify(),notifyAll()方法,wait()方法是当前线程放弃锁进入对象的waitSet,notify是放弃锁,并唤醒waitSet内的一个线程,notifyAll()则是唤醒所有waitSet的线程。

在java虚拟机就讲过jvm内存模型和jvm内存分布;并发编程主要讲的是内存模型,线程私有内存和线程公共内存之间的load和store操作步骤。jvm编程要求了并发的时候要注意三大要素:原子行,有序性,可见性。

volatile 和sychronized的区别在于 volatile 只能保证有序性和可见性,没有保证原子性,所以作为严格要求的并发,volatile其实不能满足要求。

另外,书中还讲了一些并发的开发模式,生产者消费者模式/per-thread-message模式/流水线模式/activeObjects模式/event-bus模式/event-driven-architve模式。这些将在接下来的文章中讲解

《java高并发编程详解》第0集相关推荐

  1. Java 高并发编程详解 17.0 Active Object 模式

    Active Object 模式 将接口的方法实现异步执行 结合Future(凭证)模式,流水线模式,代理模式等结合使用. 一般代码编写 编写接口方法类和实现类 /*** 方法接口命名*/ publi ...

  2. Java高并发编程详解系列-Java线程入门

    根据自己学的知识加上从各个网站上收集的资料分享一下关于java高并发编程的知识点.对于代码示例会以Maven工程的形式分享到个人的GitHub上面.   首先介绍一下这个系列的东西是什么,这个系列自己 ...

  3. Java高并发编程详解系列-7种单例模式

    引言 在之前的文章中从技术以及源代码的层面上分析了关于Java高并发的解决方式.这篇博客主要介绍关于单例设计模式.关于单例设计模式大家应该不会陌生,作为GoF23中设计模式中最为基础的设计模式,实现起 ...

  4. Java高并发编程详解系列-线程上下文设计模式及ThreadLocal详解

    导语   在之前的分享中提到过一个概念就是线程之间的通信,都知道在线程之间的通信是一件很消耗资源的事情.但是又不得不去做的一件事情.为了保证多线程线程安全就必须进行线程之间的通信,保证每个线程获取到的 ...

  5. Java高并发编程详解系列-Future设计模式

    导语   假设,在一个使用场景中有一个任务需要执行比较长的时间,通常需要等待任务执行结束之后或者是中途出错之后才能返回结果.在这个期间调用者只能等待,对于这个结果Future设计模式提供了一种凭据式的 ...

  6. Java高并发编程详解系列-类加载

    之前在写关于JVM的时候提到过类加载机制,类加载机制也是在Java面试中被经常问道的一个问题,在这篇博客中就来了解一下关于类加载的知识. 类加载   在JVM执行Java程序的时候实际上执行的编译好的 ...

  7. Java高并发编程详解系列-线程安全数据同步

    在多线程中最为复杂和最为重要的就是线程安全.多个线程访问同一个对象的时候会导致线程安全问题.通过加锁可以避免这种问题.但是在串行执行的过程中又不用考虑线程安全问题,而使用串行程序效率低没有办法将CPU ...

  8. Java高并发编程详解-代码在本地

    第1章 匿名类想达到并发效果,需要写在主线程运行内容前面 否则主线程会执行完自己的内容,再执行匿名子线程 用Jconsole查看线程状态,都是timed_waiting状态 第2章 start和run ...

  9. Java高并发编程详解系列-不可变对象设计模式

    导语   在开发中涉及到的所有关于多线程的问题都离不开共享资源的存在.那么什么是共享资源,共享资源就是被多个线程共同访问的数据资源,而且每个线程都会引起它的变化.伴随共享资源而生的新问题就是线程安全, ...

  10. Java高并发编程详解系列-ThreadAPI简单说明

    之前的两篇分享中,简单的从概念上和简单的操作上了解了Thread,这篇分享中主要是看看对于Thread的所有API的使用方式,通过解析源码的方式来了解关于Thread的细节的使用方式 引言   首先在 ...

最新文章

  1. MegEngine计算图、MatMul优化解析
  2. PTA基础编程题目集-6-7 统计某类完全平方数
  3. PS滤镜制作下雨照片特效
  4. js的动态加载、缓存、更新以及复用(四)
  5. 现在能不能升级鸿蒙,能不能升级鸿蒙系统?
  6. linux下sendmail邮件系统安装操作记录
  7. excel甘特图模板_最简单的Excel甘特图制作方法,只用一条公式,项目进度一目了然...
  8. 来谈谈Spring构造函数注入的循环依赖问题
  9. oracle数据库实践,RubyonRails连接Oracle数据库实践
  10. 讨论记录:求大于一个时间段的最大平均积分,O(n)时间实现
  11. 卡特兰(Catalan)数列
  12. Flutter之RenderObjectWidget
  13. php如何判断emoji字符串,PHP实现识别带emoji表情的字符串
  14. window下python安装包问题小结
  15. Linux 网络之netlink 简介
  16. 4/20 Fizz Buzz(412)
  17. 【GeoFans】GNSS相关产品团队
  18. Python3飞机大战全代码(亲测OJBK)
  19. 《java编程思想》读书笔记【前言】
  20. 赖人自由:B站自动签到小教程

热门文章

  1. 用K-Means聚类分析做客户分群
  2. 图像数字水印技术研究及matlab实现,基于DCT的数字水印技术研究及matlab实现.doc...
  3. Pr教程之打字机效果
  4. Nordic nRF52840实战学习--使用nRF52840开发板抓蓝牙数据包
  5. 最简单快速的源码开发平台 -- LEARUN
  6. 项目部署到tomcat出现js中文乱码解决方案
  7. 关于举办“2022年(第15届)中国大学生计算机设计大赛”通知
  8. 主流开源 BI 产品对比
  9. java dll源码查看工具_Java调用dll库源码
  10. 《出版专业实务·初级(2020版)》学习笔记