- 博客(14)
- 收藏
- 关注
原创 调用未start线程的join方法会发生什么?join方法的底层原理分析
本文通过实验验证了Java线程join()方法的潜在问题。当线程A尚未启动时,线程B调用A.join()方法会直接返回而不会等待,导致执行顺序与预期不符。作者通过修改测试代码,在主线程休眠2秒后启动线程A,成功复现了输出"BA"的异常情况。分析join()源码发现,该方法仅在目标线程处于活动状态(isAlive()返回true)时才会使当前线程等待,而新建状态的线程isAlive()返回false。因此,确保目标线程已启动后再调用join()方法才能实现预期的线程同步效果。
2026-01-21 16:41:51
577
原创 Java并发-创建线程的方法有哪些?
Java中创建线程主要有三种方式:1)继承Thread类并重写run方法;2)实现Runnable接口;3)实现Callable接口(可返回结果)。前两种通过Thread类启动,第三种通过FutureTask封装返回值。实现接口的方式更优,避免了单继承限制且开销更小。实际开发中推荐使用ExecutorService线程池管理线程,实现线程复用。三种方式本质相同,但接口实现方式更灵活且符合面向对象设计原则。
2026-01-11 00:28:16
457
原创 Java并发-为什么要有多线程,线程不安全的本质是什么?
摘要: 多线程的核心目的是提升CPU利用率和程序响应速度,解决单线程下资源闲置和阻塞问题。线程不安全指多线程并发访问共享数据时,因原子性、可见性和有序性问题导致结果异常。本质原因是: 原子性破坏:非原子操作被线程切换打断; 可见性问题:CPU缓存导致修改未及时同步; 有序性破坏:指令重排序在多线程下引发逻辑错误。例如自增操作因非原子性导致结果偏差,双重检查锁因重排序返回未初始化对象。这些特性在多线程并发时共同构成线程不安全的根源。
2026-01-10 14:20:50
1006
原创 苍穹外卖新增菜品功能开发
本文介绍了新增菜品功能的开发过程,主要包括三个接口:分类查询、文件上传和菜品新增。开发中配置了阿里云OSS服务用于文件上传,实现了菜品信息和口味的批量保存功能。通过Controller、Service和Mapper三层架构完成代码编写,最终测试验证功能正常,数据完整保存。文章详细展示了配置文件、工具类创建、接口实现及数据库操作等关键代码片段。
2025-07-31 12:44:25
425
原创 公共字段自动填充
本文介绍了基于AOP和反射技术实现公共字段自动填充的开发方案。通过在Mapper层方法上添加自定义注解@AutoFill,结合切面编程对INSERT和UPDATE操作进行拦截,利用反射自动填充创建人、创建时间、更新人和更新时间等公共字段。该方案避免了在业务层重复编写字段赋值代码,提高了开发效率和代码可维护性。测试结果显示,插入和更新操作均能成功自动填充公共字段,验证了方案的可行性。该技术适用于需要统一管理公共字段的场景,可有效减少代码冗余。
2025-07-29 15:59:16
457
原创 苍穹外卖编辑员工功能开发
本文介绍了员工编辑功能的开发过程,主要包括:1)需求分析,实现员工查询和编辑功能;2)代码开发,包括Controller层接口定义、Service层业务逻辑实现及Mapper层数据库操作;3)功能测试,验证前后端联调效果;4)代码提交流程。重点展示了使用MyBatis进行动态SQL更新、属性拷贝及驼峰命名注意事项等关键技术实现。通过完整的开发流程,实现了员工数据的查询展示与编辑更新功能。
2025-07-28 22:45:20
407
原创 苍穹外卖启用禁用员工账号
本文介绍了员工账号启用/禁用功能的开发过程。通过POST请求接收状态参数和员工ID,在Controller层处理请求,Service层构建员工对象,Mapper层实现动态SQL更新功能。测试环节使用Swagger和前后端联调验证功能完整性,最后通过Git提交代码。该功能实现了员工账号状态的灵活切换,采用动态SQL确保数据更新的安全性。
2025-07-28 00:44:54
346
原创 苍穹外卖实现员工分页查询
本文介绍了员工分页查询功能的开发过程。首先进行需求分析,设计了DTO、Controller、Service和Mapper层,使用PageHelper实现分页查询,并通过动态SQL处理条件查询。在功能测试阶段发现两个问题:时间参数传递格式和返回时间渲染格式。针对时间格式问题提供了两种解决方案:一是在实体类字段添加@JsonFormat注解,二是在配置类中扩展消息转换器。最终实现了包含条件查询、分页显示和规范化时间格式的功能,并通过Swagger和前后端联调验证了功能完整性。
2025-07-27 23:57:08
441
原创 Maven个人笔记整理
Apache Maven是一个Java项目管理和构建工具,通过POM(项目对象模型)管理项目依赖、构建和配置。主要功能包括依赖管理(通过pom.xml导入jar包)、统一项目结构(跨IDE兼容)和标准化构建流程(支持多系统)。Maven使用坐标(groupId、artifactId、version)唯一标识资源,并通过本地/远程/中央仓库管理依赖。其生命周期分为clean、default(核心构建)和site(文档生成)三套,每套包含有序阶段。开发中可通过配置依赖范围(scope)和排除传递依赖来优化项目结
2025-07-06 22:02:41
881
原创 HashMap TreeMap LinkedHashMap三者的使用场景
在大多数情况下,HashMap是默认选择,因为它提供了最佳的性能和灵活性。只有在需要特定的排序或顺序保持功能时,才考虑使用TreeMap或LinkedHashMap。Java中的这三种Map实现虽然都用于存储键值对,但由于底层数据结构和特性不同,适用于不同的场景。
2025-06-13 00:26:55
688
原创 C语言零基础入门教程—01什么是编程语言
本文主要针对新手小白,简要解释了什么是编程语言,以及C语言的一些背景知识,帮助读者更好地理解什么是编程语言、为什么从C语言开始学起等问题
2024-09-03 15:51:22
952
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅