news 2026/4/16 7:21:01

八股文学习日常(并发编程)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
八股文学习日常(并发编程)

1.介绍Java的内存模型(JMM)

JMM是解决多线程并发问题的一套规则,简单来说就是在多线程环境下,保证线程访问共享变量不出错。核心需要解决的三个问题是可见性,原子性和有序性。

可见性问题:线程A对数据进行修改,没有及时写回主内存,因此线程B读取到的就是主内存中更新前的数据,引发可见性问题。

原子性问题:i++,线程A刚执行读取i的操作,线程B立即执行了+1操作并且返回主存,然后线程A执行+1操作返回主存,那么相当于执行了两次++操作,但是最后结果却是只加了一次,这就是原子性问题

有序性问题:本来应该是先初始化对象,然后将对象赋值给引用,而可能会被重排成先赋值,后初始化,在多线程时,线程A可能还未初始化,线程B就开始赋值,那么就会报错,这就是有序性问题。

JMM会定义一个主内存与工作内存,线程每次读取共享变量需要从主内存将数据加载到工作内存中进行操作,并且再加载回主内存。使用volatile,synchronized关键字,控制加载、写回的时机,以及禁止不合理的指令重排,使得多线程能正确操作共享变量进行交互。

2.Java多线程是什么?需要注意什么?

Java多线程是指在一个程序中存在多个线程,能从共享内存中读取数据,每个线程有自己的栈和程序计数器,能同时执行不同的任务。

需要注意:

1.线程安全问题,在线程读取数据的过程中,可能会出现数据错误等问题,例如两个线程本该对数据执行两次+操作,但是结果显示只+了一次,需要使用synchronized,Lock锁加以控制。

2.线程间的通信,一个线程创建资源,一个线程消费资源,可能会出现线程A还未准备好,线程B就开始执行的情况,需要使用wait(),notify()方法,防止出现数据读取错误或者线程无限等待等问题。

3.线程的创建与销毁,频繁的创建和销毁线程,会浪费系统资源,影响性能,可以使用线程池缓存线程,先创建好一定量的线程,无需频繁的创建和删除。减少资源消耗。

3.保证数据一致性的方案有哪些?

1.数据库的事务管理:通过事务管理,数据要么全部成功提交,要么全部失败回滚,通过ACID保证数据的一致性。

2.锁机制:通过synchronized关键字或者其他锁机制,实现对共享资源的互斥访问。

3.版本控制:使用乐观锁,在更新数据时记录版本信息,防止对同一数据进行修改。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 15:21:42

7、Apache服务器管理与优化全解析

Apache服务器管理与优化全解析 1. 问题排查步骤 当遇到问题时,可按以下步骤进行排查: - 检查每个主机是否有别名。 - 调用 ifconfig -a 命令,查看是否有正确的网络接口。 - 检查 BindAddress 指令是否已定义,并且与别名对应。 2. httpd进程数量管理 服务器进程有…

作者头像 李华
网站建设 2026/4/14 7:11:33

16、Apache服务器的常见配置与使用指南

Apache服务器的常见配置与使用指南 1. 基础配置与操作 在进行Apache相关操作前,需确保指定目录有合适的内容,之后可通过以下命令重启httpd守护进程以读取新配置: apachectl graceful若要完成后续练习,需定位并理解 /usr/local/apache/ 下的Apache配置文件,同时找到Ap…

作者头像 李华
网站建设 2026/4/12 20:31:54

基于STM32单片机快递柜外卖柜扫码取件语音播报蓝牙无线APP/WiFi无线APP/摄像头视频监控/云平台设计S368

STM32-S368-存取柜取件码二维码语音播报存件手机号录入后台数据4舵机OLED屏按键(无线方式选择)产品功能描述:本系统由STM32F103C8T6单片机核心板、OLED屏、(无线蓝牙/无线WIFI/无线视频监控/联网云平台模块-可选)、键盘部分、语音播报模块接口…

作者头像 李华
网站建设 2026/4/12 22:03:51

Miniconda配置PyTorch避坑指南:版本兼容与DLL加载问题

Miniconda配置PyTorch避坑指南:版本兼容与DLL加载问题 在搭建深度学习开发环境时,你有没有遇到过这样的场景?明明按照官方命令安装了 PyTorch,却在 import torch 时突然报错: ImportError: numpy.ndarray size change…

作者头像 李华
网站建设 2026/4/14 7:07:42

嵌入式模组拨号成功后,与其连接的上位机的网卡获取了IP地址,然后上位机可以通过这个网卡上网,ping百度,做数据业务。如果此时上位机的网卡ping不通百度,需要看什么日志呢?

1、先检查模组是否拨号成功?若拨号成功继续下一步,若拨号失败检查拨号日志。2、检查PDP上下文是否激活?网络注册是否成功?拨号成功不代表数据业务激活比如ATCGACT?检查PDP上下文是否激活比如ATCGREG?检查网络注册状态比如ATCSQ检…

作者头像 李华
网站建设 2026/4/8 19:53:27

Stable Diffusion 3.5-FP8环境配置全攻略

Stable Diffusion 3.5-FP8 环境配置实战指南 在尝试部署 stable-diffusion-3.5-fp8 的时候,你是不是也遇到过这样的场景:明明是专为效率优化的 FP8 版本,结果加载时却比原版更卡?显存溢出、依赖报错、模型文件只有几 KB——这些问…

作者头像 李华