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

2021-04-30 16:29

阅读:425

标签:可见性   分时   传递   ola   join()   子线程   str   编译优化   sync   

  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并发编程实战》中的知识点

标签:可见性   分时   传递   ola   join()   子线程   str   编译优化   sync   

原文地址:https://www.cnblogs.com/find-the-right-direction/p/13227127.html


评论


亲,登录后才可以留言!