栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

并发编程阶段性总结

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

并发编程阶段性总结

前言

前面几篇文章详细介绍了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语言是一门为并发而生的语言,在并发领域表现强悍的语言,期待以后有更好的发展​。

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/716107.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号