理解高并发(2).我对并发编程的理解
来源:互联网 发布:mysql服务器 编辑:程序博客网 时间:2024/05/17 03:44
对于并发编程, 涉及的技术点非常多, 我们首先需要明确一些基本概念,只有概念清晰,才能做到在以后深入学习关键技术的过程中不致于感觉到吃力和迷惑。 其次,我们还需要明白在并发编程最需要关注的问题是什么? 带着关键问题去学习,才能够起到事办功倍、稳扎稳打的效果。
下面是我所总结的一些很多人容易混淆的概念:
1. 高并发、多线程
- 高并发
高并发是请求,指的是多个客户端同一时刻向服务端发送请求, 它是一种现象。
比如,电商网站在双11凌晨12:00分 同时有2000个下单请求。
- 多线程
多线程是处理,指的是同一时刻多个执行者处理同一类的任务, 它有具体的实现。比如
电商网站在双11凌晨12:00分同时有100个线程处理2000个下单请求。
2. 并行、并发
- 并行
多核cpu的情况, 多个任务执行者并行处理任务
- 并发
单个cpu的情况下,cpu间断性的执行多个任务。
举个打扫房间的例子,如果你有1把扫帚需要打扫2个房间, A房间打扫到一半的时候,你再切换到B房间,这就现象称之为并发; 如果你有2把扫帚,这个时候就可以同时打扫2个房间了,这种现象称之为并行。
3. 多线程就一定效率高吗?
从上面打扫房间的例子可以看出, 多线程并非效率一定高。 只有在并行的情况下效率才能保证, 并发需要做上下文切换,会影响整体性能。
4. 并发编程需要注意的2个问题
并发编程尤其需要注意的是共享数据的安全性和锁性能方面的问题, 在并发编程领域的讨论中,几乎90%以上都是围绕这2大主题展开,甚至jdk每个版本的升级都有针对这2方面问题做优化, 如jdk5之后的各种锁优化技术、volatile、threadlocal关键字等。
- 共享数据的安全性问题
堆内存和方法区内存可以共享。 因此成员变量和静态变量存在数据安全性问题。
- 锁竟争带来的程序效率问题
多个线程访问共享资源时,只有获取到锁的线程才允许访问共享资源,未获得到锁的线程只能在临界区进行排队等待,试想如果有1000个线程同时访问共享资源,那么最后一个线程必须要等前面999个线程执行完后才能够进入监界区操作共享资源。
如果锁没有控制好,非常容易出现程序整体性能低下的情况。
阅读全文
0 0
- 理解高并发(2).我对并发编程的理解
- 我对高并发的理解
- 聊聊高并发(五)理解缓存一致性协议以及对并发编程的影响
- 我目前对并发的理解
- 谈谈我对Java并发的理解——读《Java并发编程实战有感》
- 对JAVA多线程 并发编程的理解
- 对JAVA多线程 并发编程的理解
- 小菜鸟对并发编程的理解
- 高并发的简单理解
- 理解高并发(6).jvm对内置锁的优化
- JAVA并发编程的理解
- JAVA并发编程的理解
- 并发编程概念理解
- 对loadrunner并发用户数的理解
- 理解高并发(1).序言
- 深入理解高并发程序设计
- 理解高并发(13).完成后给我报告countDownLatch
- Java并发编程之volatile的理解
- python3.6打包exe
- RenderTarget在虚幻4的应用【3】路径消褪
- HttpClient ---------- 服务器请求外部service
- 如何使用PD10虚拟机安装ubuntu
- hrbust 1492 二分图匹配
- 理解高并发(2).我对并发编程的理解
- 9个最佳的大数据处理编程语言
- [字符串HASH][复杂度分析] NOI2017 .Day1 T2 蚯蚓排队
- STL空间配置器
- MNIST机器学习入门
- 理解高并发(3).多线程开发常见问题示例
- SSM整合
- JavaSE编程基础 第一章 初识Java
- windows下全文检索引擎sphinx/coreseek的安装配置