并发编程——8.阶段小结

并发编程到目前为止一共发了7篇文章了,下面就并发的内容简单的来做一个阶段性的小结。

        在开始,我们通过一个很简单的例子(单线程的),讲了Java运行时内存,这部分内容很重要,对于以后理解并发有很大的帮助。然后我们又举了一个Java多线程的例子,讲了Java多线程的运行时内存。这部分内容是属于基础内容。

        前面的基础内容讲完后,我们正式进入JUC并发编程。一开始我们讲了什么是JUC并发编程,讲了并发编程关注的两个问题:如何使用线程和如何保证线程安全。后面我们讲了进程、线程、协程三个概念,讲了并发、并行、串行三个概念,后面又讲了CPU的一些内容,至此,准备工作讲完。

        上面的准备内容讲完后,我们开始了第一大点:如何使用线程。我们讲了怎么创建线程,即创建线程的三种方式,这个要牢牢掌握。然后,我们简单的讲了一下线程的底层原理(源码层级的),画了一张图,这部分内容最后是掌握一下,面试时说出来很装逼的。后来我们讲了线程中的一些方法,很多,要掌握常用的几个。线程讲完后,我们讲了线程池讲了怎么使用线程池,使用线程池的注意事项,线程池的底层原理是什么(那几个参数),以及如何自定义线程池。这部分很重要,面试必问。至此,我们并发编程第一大点:如何使用线程讲完了。

        下面看并发编程的第二大点:如何保证线程安全。在讲具体内容之前,我们讲了JMMJava内存模型(最好说成Java多线程内存模型,和JVM的那个区别开来),讲了volatile关键字和它的底层原理,具体的讲解了有序性。之后,我们正式开始讲Java的线程安全,讲了什么是线程安全线程安全的三大特性如何保证线程安全,我们讲了破坏临界资源、使用ThreadLocal、使用volatile关键字、使用原子类等方式,每种方式都要掌握。后面,我们重点的讲解了并发编程中的锁,用锁来保证线程安全,我们讲了乐观锁与悲观锁,在乐观锁中我们讲了CAS算法、ABA问题,然后我们讲了自旋锁与互斥锁,讲了消费者与生产者模式(这部分内容属于拓宽的),然后中的讲了 synchronized锁升级机制,讲了可重入锁,讲了ReentrantLock同步互斥锁,讲了公平锁和非公平锁,讲了共享锁和排他锁,讲了synchronized与Lock的区别。至此,我们线程安全的内容算是讲完了。

        看到这里,是不是感觉并发编程的内容很多?的确,并发编程的内容非常多,非常的散,非常的碎,并且它的许多内容是与计算机的底层联系的一起的,如果想真正的理解,必须要从计算机的底层说起,所以这部分内容也非常的不好理解。

        但是,那又怎样呢?因为难就不学吗?Of Course Not !我们要有 “ 明知山有虎,偏向虎山行 ” 的勇气,要有 “ 不到长城非好汉,屈指行程二万 ” 的豪迈,要有 “ 长风破浪会有时,直挂云帆济沧海 ” 的信心。正如肯尼迪在演讲中所说的“ We choose to go to the moon. We choose to go to the moon in this decade and do the other things, not because they are easy, but because they are hard, because that goal will serve to organize and measure the best of our energies and skills, because that challenge is one that we are willing to accept, one we are unwilling to postpone, and one which we intend to win, and the others, too.”一样。愿诸君都能永远向上!

        并发编程系列文章中有些内容讲的不是很清楚很详细,后面有机会了我会再针对那些内容出单篇的文章去详细的讲解。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/807852.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Composer安装与配置:简化PHP依赖管理的利器(包括加速镜像设置)

在现代的PHP开发中,我们经常会使用许多第三方库和工具来构建强大的应用程序。然而,手动管理这些依赖项可能会变得复杂和耗时。为了解决这个问题,Composer应运而生。Composer是一个PHP的依赖管理工具,它可以帮助我们轻松地安装、更…

微服务和K8S

微服务和Kubernetes(通常简称为K8s)都是现代软件开发和部署中常用的概念和工具。它们有着各自独特的特点和作用: 1. **微服务**: - **定义**:微服务是一种架构设计风格,将应用程序拆分为一组小型、独立…

【JavaEE初阶系列】——网络编程 UDP客户端/服务器 程序实现

目录 🚩UDP和TCP之间的区别 🎈TCP是有连接的 UDP是无连接的 🎈TCP是可靠传输 UDP是不可靠传输 🎈TCP是面向字节流 UDP是面向数据报 🎈TCP和UDP是全双工 👩🏻‍💻UDP的socket ap…

共享IP和独享IP如何选择,两者有何区别?

有跨境用户在选择共享IP和独享IP时会有疑问,不知道该如何进行选择,共享IP和独享IP各有其特点和应用场景,选择哪种方式主要取决于具体需求和预算。以下是对两者的详细比较: 首先两者的主要区别在于使用方式和安全性:共…

使用c语言libexpat开源库解析XML数据

1 libexpat简介 Expat 是一个用 C 语言编写的开源 XML 解析库,以其高性能和小巧的体积著称。Expat 兼容多种操作系统平台,包括但不限于 Windows、Linux、macOS 等。由于其跨平台特性和简单易用的API,Expat 成为了许多C/C程序员解析XML文档的…

git安装配置教程(小白保姆教程2024最新版)

目录 一、Git是什么?二、安装Git1.下载git2.安装git3.检测git 三、配置Git1.配置本地信息2.配置SSH1)SSH与SSH Key是什么?2)生成SSH Key3)获取ssh key公钥内容(id_rsa.pub)4)Github账号上添加公…

【java数据结构-二叉树(上)】

java数据结构-二叉树(上) 二叉树的概念二叉树的节点介绍 二叉树构造如何使用兄弟表示法构造二叉树两种特别的二叉树二叉树的基本性质: 二叉树的存储二叉树的遍历:前序遍历:中序遍历:后序遍历:层…

Vue链接跳转地址 href 中有参数带有#

Vue链接跳转地址 href 中有参数带有# A跳转B 带参数backURL 转码一次会被浏览器解码 xxxx?backurlencodeURIComponent(url) 到B页面拿到的query 值取不到 需要对地址转码两次才能取值成功 xxxx?backurlencodeURIComponent(encodeURIComponent(url))

【随笔】Git 基础篇 -- 远程仓库 git clone(二十五)

💌 所属专栏:【Git】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! 💖 欢迎大…

如何本地搭建开源导航页配置服务Dashy并发布到公网分享好友使用

文章目录 简介1. 安装Dashy2. 安装cpolar3.配置公网访问地址4. 固定域名访问 正文开始前给大家推荐个网站,前些天发现了一个巨牛的 人工智能学习网站, 通俗易懂,风趣幽默,忍不住分享一下给大家。[点击跳转到网站] 简介 Dashy 是…

学习C++有没有必要学习boost库?

在深入学习C这一强大且灵活的编程语言的过程中,是否有必要学习Boost库是许多开发者会面临的一个重要问题。Boost库,被誉为C的“瑞士军刀”,以其丰富的工具集和强大的功能性深受广大C程序员的喜爱。本文将就此问题进行详细的探讨。 一、Boost…

前端开发基础(HTML5 + CSS3)【第一篇】:HTML标签之文字排版、图片、链接、音频、视频 涵盖了两个综合案例 做到了基础学得会,实战写的出

点击前往前端开发基础专栏: 文章目录 HTML5 CSS3 开发一、开发环境搭建下载 VS Code1. 2 插件的下载1.3 项目和文件的下载 二、 什么是 HTML2.1 标签的语法2.2 代码演示:2.3 小结 三 、HTML基本骨架3.1 快捷键生成HTML骨架3.2 代码展示3.3 小结 四、标…

阿里淘天一面凉经

电话面,秒挂。 由于答的依托。导致面试官一开始就准备要挂我了。后面问的参考性不大。 总结: 1.自我介绍 2.项目里自己体会比较多的,遇到困难比较大的技术实现。(没复习) 3.项目中什么场景下用到分布式锁&#xf…

【Vit】Vision Transformer 入门与理解

在学习VIT之前,建议先把 Transformer 搞明白了:【transformer】入门与理解 做了那些改进? 看图就比较明白了,VIT只用了Encoder的部分,把每一个图片裁剪成若干子图,然后把一个子图flatten一下,…

【MATLAB源码-第12期】基于matlab的4FSK(4CPFSK)的误码率BER理论值与实际值仿真。

1、算法描述 4FSK在频移键控(FSK)编码的基础上有所扩展。FSK是一种调制技术,它通过在不同频率上切换来表示不同的数字或符号。而4FSK则是FSK的一种变种,表示使用了4个不同的频率来传输信息。 在4FSK中,每个数字或符号…

真随机数和伪随机数

真随机数和伪随机数 我先是看的TI的DL_TRNG_sendCommand(TRNG, DL_TRNG_CMD_NORM_FUNC);函数,能生成真随机数。要在microchip的八位机上移植同样的功能,但是那个库函数是伪随机数,我就看了两者的区别。区别就是,真随机数会出现随机…

基于Java的图书借阅网站, java+springboot+vue开发的图书借阅管理系统 - 毕业设计 - 课程设计

基于Java的图书借阅网站, javaspringbootvue开发的图书借阅管理系统 - 毕业设计 - 课程设计 文章目录 基于Java的图书借阅网站, javaspringbootvue开发的图书借阅管理系统 - 毕业设计 - 课程设计一、功能介绍二、代码结构三、部署运行1、后端运行步骤2、…

PaddleDetection 项目使用说明

PaddleDetection 项目使用说明 PaddleDetection 项目使用说明数据集处理相关模块环境搭建 PaddleDetection 项目使用说明 https://github.com/PaddlePaddle/PaddleDetection/blob/release/2.7/configs/ppyoloe/README_cn.md 自己项目: https://download.csdn.net/d…

功能测试、自动化测试、性能测试的区别

🍅 视频学习:文末有免费的配套视频可观看 🍅 关注公众号:互联网杂货铺,回复1 ,免费获取软件测试全套资料,资料在手,薪资嘎嘎涨 按测试执行的类型来分:功能测试、自动化测…

Cheat Engine ceserver 连接手机记录

按照流程 电脑端的 cheat engine 7.5不显示任何内容 换一个 cheatengine 就好了 真神奇 链接:https://pan.baidu.com/s/14nMRHPEJ7enygI2nQf86YQ?pwdkxma 提取码:kxma