Java并发编程总结和思考

简介: 本文强调并发编程是一项难度较高但也非常重要的技能,不仅需要理论知识的支持,还需要在实践中不断积累经验。

「这是我参与2022首次更文挑战的第18天,活动详情查看:2022首次更文挑战」。

前言

前面几篇文章详细介绍了Java并发领域常见的知识原理,对并发知识有了系统的理解,今天再对并发知识做一次阶段性总结。下面是前几天关于并发知识的文章,感兴趣的伙伴自取。

Java并发编程之Thread知识整理

Java并发编程之ThreadPool知识整理

Java并发编程之ThreadLocal知识整理

Java并发编程之volatile知识整理

Java并发编程之synchronized知识整理

JAVA并发之AQS基础总结

Java并发知识之ReentrantLock

Java并发编程之ArrayBlockingQueue知识整理

Java并发编程之CopyOnWriteArrayList

Java并发编程之CountDownLatch知识整理

Java并发编程之CyclicBarrier知识整理

Java并发编程之Semaphore知识整理

这些文章包括了Java并发编程中常用的一些组件,但是还有ConcurentHashMap,LongAdder,AtomicLong,ForkJoinPool等并发知识未涉猎,笔者还没有很好的理解,后续有更深刻的理解再出文分析。

并发知识在Java中是比较难学懂,也比较难学好的一项基本工,因为并发编程不仅仅要有足够的理论知识做支撑,还要在实际并发的业务场景中打磨历练,才能对并发编程有更高的理解。笔者结合自身的工作经验和最近学习的心得,从下面几个问题来对并发知识做一次阶段总结,给前面的学习做一个沉淀。

一、并发出现的背景

并发问题其实不是计算机出现就有了,并发是随着硬件的不断升级,业务系统复杂度上升而逐渐演化而来的。

1、随着cpu的升级,一台计算机可能有多个cpu核心,那么就同时支持多个线程运行,多个线程对共享资源的操作就会产生并发问题。

2、随着业务系统的复杂度上升,一个业务系统从单体应用演化成分布式应用,到现在的微服务应用,用户的请求可能会被路由到不同的计算机进行处理,这样如果多个请求都对同一个共享资源进行操作,也会带来并发的问题。

二、并发带来的问题

1、从数据层面讲,并发会导致程序数据错乱,程序出现和预期不一致的结果

2、从业务层面讲,并发可能会导致资金损失,损害公司或者用户利益

三、并发问题的解决方案

在Java领域,jdk设计者提供了多种解决并发的手段,可以以下几类:

1、无锁

像ThreadLocal就是一种无锁的设计,通过空间换取线程安全性。

2、乐观锁/自旋锁

AtomicLong,ReentrantLock,Semaphore等是借助cas这种乐观锁机制,

减少了系统切换开销

3、重量级别锁

Synchronized是一种重量级锁的手段,会导致线程内核态和用户态之间的切换,性能是极低的。

四、并发编程的未来 随着硬件的发展和社会数字化的发展,并发编程的场景应该是会越来越多,并发编程应该是未来程序员必须掌握的一项基本工。近两年go语言也越来越流行,go语言是一门为并发而生的语言,在并发领域表现强悍的语言,期待以后有更好的发展。

相关文章
|
3天前
|
SQL Java 数据库
2025 年 Java 从零基础小白到编程高手的详细学习路线攻略
2025年Java学习路线涵盖基础语法、面向对象、数据库、JavaWeb、Spring全家桶、分布式、云原生与高并发技术,结合实战项目与源码分析,助力零基础学员系统掌握Java开发技能,从入门到精通,全面提升竞争力,顺利进阶编程高手。
90 1
|
2月前
|
Java API 微服务
为什么虚拟线程将改变Java并发编程?
为什么虚拟线程将改变Java并发编程?
252 83
|
1月前
|
安全 Java 数据库连接
2025 年最新 Java 学习路线图含实操指南助你高效入门 Java 编程掌握核心技能
2025年最新Java学习路线图,涵盖基础环境搭建、核心特性(如密封类、虚拟线程)、模块化开发、响应式编程、主流框架(Spring Boot 3、Spring Security 6)、数据库操作(JPA + Hibernate 6)及微服务实战,助你掌握企业级开发技能。
233 3
|
4天前
|
Java 开发者
Java并发编程:CountDownLatch实战解析
Java并发编程:CountDownLatch实战解析
|
21天前
|
算法 Java
Java多线程编程:实现线程间数据共享机制
以上就是Java中几种主要处理多线程序列化资源以及协调各自独立运行但需相互配合以完成任务threads 的技术手段与策略。正确应用上述技术将大大增强你程序稳定性与效率同时也降低bug出现率因此深刻理解每项技术背后理论至关重要.
53 16
|
14天前
|
NoSQL Java 关系型数据库
超全 Java 学习路线,帮你系统掌握编程的超详细 Java 学习路线
本文为超全Java学习路线,涵盖基础语法、面向对象编程、数据结构与算法、多线程、JVM原理、主流框架(如Spring Boot)、数据库(MySQL、Redis)及项目实战等内容,助力从零基础到企业级开发高手的进阶之路。
98 1
|
30天前
|
安全 算法 Java
Java泛型编程:类型安全与擦除机制
Java泛型详解:从基础语法到类型擦除机制,深入解析通配符与PECS原则,探讨运行时类型获取技巧及最佳实践,助你掌握泛型精髓,写出更安全、灵活的代码。
|
29天前
|
安全 Java Shell
Java模块化编程(JPMS)简介与实践
本文全面解析Java 9模块化系统(JPMS),帮助开发者解决JAR地狱、类路径冲突等常见问题,提升代码的封装性、性能与可维护性。内容涵盖模块化核心概念、module-info语法、模块声明、实战迁移、多模块项目构建、高级特性及最佳实践,同时提供常见问题和面试高频题解析,助你掌握Java模块化编程精髓,打造更健壮的应用。
|
1月前
|
Java
Java编程:理解while循环的使用
总结而言, 使用 while 迴圈可以有效解决需要多次重复操作直至特定條件被触发才停止執行任务场景下问题; 它简单、灵活、易于实现各种逻辑控制需求但同时也要注意防止因邏各错误导致無限迁璇発生及及時處理可能発生异常以确保程序稳定运作。
185 0