JUC框架 源码解析系列文章目录 JDK8

news/2024/5/20 7:24:04 标签: java, JUC, 多线程, 源码解析

前言

笔者在接下来这段时间将对JUC框架内的重点内容进行深度解析,由于内容颇多,需要分成多篇文章,所以在这里列一个目录,方便大家翻阅。

目录

JUC框架的基础是CAS和自旋,而CAS则是利用Unsafe类提供的CAS操作,而原子类则依靠于CAS和自旋。下面几篇文章从源码分析JUC框架内的几个重要的原子类。

ThreadLocal本身不在JUC框架之中,但它却是一种防止多线程竞争的重要手段。

  • JUC ThreadLocal源码行级解析 JDK8
  • 听说你看过ThreadLocal源码,来面试下这几个问题

AQS(AbstractQueuedSynchronizer)向下依赖了CAS和自旋,向上则提供了一个同步队列的实现,许多JUC框架内中的类都直接使用了AQS作为内部类。下面几篇文章将从AQS提供的几种功能进行深度分析。

  • AQS深入理解系列(一) 独占锁的获取过程
  • AQS深入理解系列(二) 独占锁的释放过程
  • AQS深入理解系列(三)共享锁的获取与释放
  • AQS深入理解系列(四)Condition接口的实现

AQS中有些函数的具体实现细节,并不是很容易让人理解,这些地方一般都是因为考虑了同步队列变化中的中间状态。

  • AQS深入理解 hasQueuedPredecessors源码分析 JDK8
  • AQS深入理解 setHeadAndPropagate源码分析 JDK8
  • AQS深入理解 doReleaseShared源码分析 JDK8
  • AQS深入理解 shouldParkAfterFailedAcquire源码分析 状态为0或PROPAGATE的情况分析
  • interrupt()中断对LockSupport.park()的影响

JUC框架中有些同步构件依赖了AQS作为实现底层,我们一般使用它们来做到多线程之间的协作。

JUC框架中也提供了各种用途的集合类。

最后部分将讲解线程池相关源码。

至此,本系列文章暂告一段落,以后有机会再来补充。

另外,如果你对JUC框架的源码有什么疑问,最好是去concurrency-interest直接询问大佬,大佬们甚至是Doug Lea本人都会愿意解答的。本人的体验是一个问题去各大中文论坛提问一无所获,甚至去stackoverflow也没人回答问题,还是concurrency-interest比较靠谱。另外,提问前先在搜索引擎找找看(学会百度~),提问时用英文描述清楚(起码让外国人能看懂~)。

后记

以上文章一般多以源码分析为主,虽不敢保证完全权威,但肯定能为你对JUC的理解铺平道路。

如果对我的文章有疑问,欢迎在评论区指出。

如果觉得本人文章对你有帮助,欢迎点赞,评论,收藏。三连走起,拒绝白嫖,从我做起,博主真的很需要你的支持!

如果想要转载文章,请注明出处哦。

人若无名,专心练剑!与诸君共勉!

未完待续,To Be Continued!
在这里插入图片描述


http://www.niftyadmin.cn/n/768135.html

相关文章

(三)linux ftp服务器搭建 vsftpd

使用vsftpd搭建ftp服务器。 1.安装vsftpd sudo apt-get install vsftpd2.修改配置文件 cd sudo vi /etc/vsftpd.conflistenYES #匿名用户登录允许打开 anonymous_enableYES local_enableYES #打开写权限 write_enableYES local_umask022 #匿名用户上传权限打开 anon_upload_…

(二)Linux NFS 服务器搭建

#NFS 服务器搭建 背景:最近学习linux,想要搭建一个网络共享文件 NFS Server 一、安装nfs sudo apt-get install nfs-kernel-server二、创建共享目录 mkdir NfsShare ##因为要创建的权限是读写权限。 chmod 777 NfsShare三、修改配置文件 sudo vi /e…

(一)linux基本命令

提示:最近在学习linux基本命令,学了忘是常态。写个文章,学而时习之。 文章目录一.linux基本快捷键1.移动2.删除3.清屏4.翻页二.linux目录结构三.linux基本命令1.linux文件类型2.ls3.pwd4.mkdir5.rm6.touch7.cp8.cat9.mv10.ln11.df12.which13.…

(四)gcc编译器 1.编译与链接

内容:本节主要用于介绍gcc编译器的使用。 目录:1.gcc编译的四个阶段2.gcc的相关命令1.gcc编译的四个阶段 阶段命令功能预编译gcc -E hello.c -o hello.i1.头文件展开2.宏替换3.去注释编译gcc -S hello.i -o hello.sc文件经过编译变成汇编文件汇编gcc -c…

(五)gcc编译器 2.静态库和动态库的制作

内容摘要: 本节主要介绍静态库和动态库的制作和使用,以及比较静态库和动态库的优缺点 文章目录一、静态库的制作与使用制作步骤:静态库的使用:静态库的优缺点二、动态库的制作与使用制作步骤:动态库的使用&#…

(六)gdb调试

本节是前面章节的延续,主要介绍gdb调试的命令。 目录一、gdb调试前的准备工作二、gdb调试命令一、gdb调试前的准备工作 需要编译的时候,加参数g,生成带调试信息的可执行文件,用于以后的gdb调试。例: gcc -g hello.c…

(七)学会编写一个简单的makefile

tip:当工程大时,每次编译一次,只通过gcc命令一步一步来编译,太复杂,所以我们就需要编写makefile。makefile就相当于我们把编译时的命令写成文件。 目录1.makefile的基础2.最简单的makefile3.稍好一点的makefile4.再稍…

(八)shell脚本入门

本文只介绍简单的shell脚本编程,包含变量,输入,输出,判断,函数,循环。详细参考:shell教程 1、变量,输入,输出,条件判断 shell脚本就是一种shell解释执行的…