【多线程】Java并发线程综述

302 阅读3分钟

前言

兄弟姐妹们,又是新的一周,很开心今天博客总阅读量超过400,看看今年能不能突破1000的阅读量,废话不多说,开始今天的内容。

最近看了几本书《Java并发编程的艺术》、《Java并发编程实战》,感觉学到了很多的东西,但是同时脑子糊糊的,很难把这些知识串联起来,我相信很多同学都是一样的感觉,今天特定缕了一缕思路,搞出了个思维导图,供大家学习交流思考。 同时推荐大佬的系列博客,链接。 看完这些博客之后,再去看看上面的书籍,我相信收获会很大的。

思维导图

按照惯例,放出一个自己写的思维导图,其实建议大家自己画一个,这些才能把这些知识给串联起来。 在这里插入图片描述 我们先从常见的面试题入手,啊什么是线程?啊线程间通信的方式?啊线程池中队列慢了之后是如何处理的?啊为什么需要双重检查?等等我们发现感觉知识点都是毫无头绪的,其实都是有联系的。我们来看看上面的思维导图,分点说明。

  • 线程基础 哦,这里不就是对于线程的基本理解吗。Java中Thread相关的API。 还有线程间通信方式,如果是共享变量,那么我们可以用volatile,如果是消息通知的话,我们可以使用Object带有的wait()notify()方式,当然还可以利用JUC并发包等。
  • JMM 要深入理解Java多线程编程,我觉得首先深入理解JMM,也就是Java内存模型。这个我们可以通过i++的例子,或者是设计模式中的单例模式来串在一起。
  • JUC 从JDK1.5开始,Java就提供了很多帮助多线程开发的工具类,包括我们常用的线程池、原子类等等。
  • 锁 讲锁的话,我们从最古老的Java关键词synchronized讲起,你不得知道这个关键词的用法?底层原理是怎么实现的?是用JVM底层指令实现的吗?那和用JUC并发包的Lock有啥区别呢?那回到了JUC并发包的使用。

那同时,还有各种各样的锁,什么读写锁、什么公平锁、什么悲观乐观锁,是吧。

  • 项目使用 上面讲了这么的东西,深入底层的JVM也讲了,那么我们实际项目该如何使用呢? SpringBoot如何结合线程池使用呢?启动多线程的方式? 这里推荐下我写的文章

接下来从上面的思维导图慢慢更新博客,欢迎大家讨论!

参考资料

书籍:《Java并发编程的艺术》、《Java并发编程实战》

博客: 大佬多线程系列文章 线程间通信的用法