news 2026/9/1 10:43:50

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

作者头像

张小明

前端开发工程师

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/8/31 18:38:49

信息安全技术与Kali Linux

信息安全技术概述 信息安全技术旨在保护信息系统中的数据免受未经授权的访问、泄露、篡改或破坏。其核心目标是确保数据的机密性、完整性和可用性(CIA三要素)。随着数字化进程加速,信息安全技术已成为企业、政府及个人的关键需求。 核心信息…

作者头像 李华
网站建设 2026/9/1 3:18:34

GEO系统:多区域搜索排名监控与品牌形象统一维护解决方案

一、品牌资产管理的数字化挑战在全球化运营和数字化营销时代,企业品牌面临两大核心挑战:区域分散性:不同地区搜索结果差异导致的品牌曝光不均衡形象碎片化:多渠道内容传播引发的品牌认知不一致二、GEO系统核心功能架构1. 智能多区…

作者头像 李华
网站建设 2026/8/31 17:48:03

17、Apache服务器的代理配置、URL重写、自定义日志及性能监控

Apache服务器的代理配置、URL重写、自定义日志及性能监控 在Web服务器管理中,Apache是一款广泛使用的开源服务器软件。本文将详细介绍Apache服务器的代理配置、URL重写、自定义日志创建以及性能监控的相关知识和操作步骤。 1. 代理服务器配置 当代理服务器正确设置后,若客…

作者头像 李华
网站建设 2026/8/31 9:32:54

18、Apache服务器性能测试与配置全解析

Apache服务器性能测试与配置全解析 1. 基础问题解答 在使用Apache服务器时,有一些基础问题需要了解。例如,若要在重启服务器前拒绝所有新请求并完成所有待处理请求,可使用 apachectl graceful 选项。 ab 工具的默认请求数为1,而Web服务器守护程序常用的配置文件是 h…

作者头像 李华
网站建设 2026/9/1 10:14:26

PostgreSQL 18 远程操作实战:从连接到备份的操作实践记录

PostgreSQL 18 远程操作实战:从连接到备份的完整指南 引言 作为一名开发者,掌握数据库的基本操作是必备技能之一。最近我在 Ubuntu 24.04 服务器上安装了 PostgreSQL 18,为了更好地理解和掌握 PostgreSQL 的日常管理和操作,我进…

作者头像 李华
网站建设 2026/9/1 5:34:39

S33-装一个Server2016+PCS7虚拟机

最近不知道哪股邪风吹过小编的头顶,陆续接到3个PCS7的项目,真是看小编头发还不够秃非得再薅掉几根的节奏。那么如题,闲话少说;跟上节奏,先来搭建一个编程环境。依然采用虚拟机的方式。1-准备虚拟机软件,2-准…

作者头像 李华