整理一下《java并发编程实战》中的知识点

Posted find-the-right-direction

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了整理一下《java并发编程实战》中的知识点相关的知识,希望对你有一定的参考价值。

  1. 分工、同步、互斥的历史由来

  分工:单道、多道、分时

  同步:线程通信(组织编排任务)

  互斥:因(多线程访问共享资源)果(串行化共享资源的访问)

    1切都是为了提高性能

  2.可见性、原子性、有序性

  可见性:CPU缓存导致可见性问题

  原子性:线程切换导致原子性问题

  有序性:编译优化带来的有序性问题

  3.java创建对象的过程

  • 分配内存M
  • 将M地址分配给变量
  • 在内存M上初始化对象

  4.java内存模型

  • volatile
  • synchronized
  • final(生而不变)
  • happen-before原则
    • 顺序性:在同一个线程中,按程序顺序,前面的操作对后续操作可见
    • 可见性:对一个volatile变量的写操作对后续volatile变量的读操作可见
    • 传递性:A -> B 可见,B -> C 可见,A -> C 就可见
    • 对一个锁对象的解锁对后续对这个锁对象的加锁可见(加锁本质就是在锁对象的对象头中写入当前线程id)
    • 线程A启动子线程B后,子线程B能感知到主线程在启动子线程B之前的操作
    • 主线程A等待子线程B操作完成(B.join()方法返回)后,主线程能看到子线程B的操作

  5.对象逸出(不好的操作)

  将对象引用赋值给全局变量

 

摘自:https://time.geekbang.org/column/article/84344

以上是关于整理一下《java并发编程实战》中的知识点的主要内容,如果未能解决你的问题,请参考以下文章

Java并发编程实战的作品目录

Java 面试知识点解析——高并发编程篇

并发基础知识 — 线程安全性

Day821.并发编程Bug的源头 -Java 并发编程实战

Day821.并发编程Bug的源头 -Java 并发编程实战

《Java并发编程实战》读书笔记