`

理解高并发_我对并发编程的理解

 
阅读更多
  对于并发编程, 涉及的技术点非常多, 我们首先需要明确一些基本概念,只有概念清晰,才能做到在以后深入学习关键技术的过程中不致于感觉到吃力和迷惑。 其次,我们还需要明白在并发编程最需要关注的问题是什么? 带着关键问题去学习,才能够起到事办功倍、稳扎稳打的效果。
      下面是我所总结的一些很多人容易混淆的概念:

     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个线程执行完后才能够进入监界区操作共享资源。
                 如果锁没有控制好,非常容易出现程序整体性能低下的情况。
分享到:
评论

相关推荐

    C#Socket高并发_socket_socket并发_c#socket_C#_socket高并发_源码.zip

    通过解压提供的源码,我们可以深入理解如何在C#中实现Socket的高并发处理。源码可能会包含服务器端的主程序,负责监听和接受连接;客户端的实现,用于模拟并发连接;以及可能的数据传输和处理逻辑。分析源码可以帮助...

    深入理解高并发编程-核心技术原理

    【深入理解高并发编程-核心技术原理】是一本专注于讲解高并发编程核心概念和技术的书籍,由阿里P8级别的架构师及Mykit系列开源框架作者撰写。本书内容涵盖源码分析、基础案例、实战案例和面试相关知识,旨在帮助读者...

    深入理解高并发编程(冰河原创电子书)

    全网首个最全的免费开源的高并发电子书,内容涵盖源码分析、基础案例、实战案例、面试和系统架构,内含秒杀系统和分布式锁的完整架构过程,历时半年精打细磨,一经发布,火遍全网,至今全网累计下载60万+,无论是刚...

    深入理解并发编程

    Linux大神Paul McKenney的作品《深入理解并发编程》对并发编程的各种概念进行了详细介绍。该书深入探讨了内存屏障(Memory Barriers)和互斥锁(Mutual Exclusion, mutex)等关键技术。内存屏障是一种同步机制,可以...

    IOCPDemo_NET_.net高并发_并发_socket并发_.net_高并发_

    总结来说,这个示例项目是一个实用的学习资源,它涵盖了.NET平台下利用IOCP实现高并发Socket通信的关键技术,对于理解和实践高性能网络编程的开发者非常有价值。通过深入研究IOCPDemo_NET的源码,可以提高处理大规模...

    汪文君高并发编程实战视频资源下载.txt

     Java高并发第三阶段(JUC).png  高并发编程第三阶段01讲 AtomicInteger多线程下测试讲解.mkv  高并发编程第三阶段02讲 AtomicInteger API详解,以及CAS算法详细介绍.mkv  高并发编程第三阶段03讲 利用CAS构造一...

    c++并发编程.rar_C 并发编程_C++并发编程_售票_售票系统_并发

    这个例子有助于理解C++中如何实现并发控制以及并发编程的关键概念。 首先,我们需要了解并发编程的基本概念。并发是指两个或更多的操作在同一时间段内进行,而不是顺序执行。这并不意味着这些操作会并行完成,因为...

    Java 并发核心编程

    ### Java 并发核心编程知识点解析 #### 一、Java并发概述 自Java诞生之初,其设计者就赋予了该语言强大的并发处理能力。Java语言内置了对线程和锁的支持,这...理解和掌握这些概念和技术是成功进行并发编程的关键。

    高并发和并发编程

    在IT领域,尤其是在Java编程中,"高并发"和"并发编程"是两个至关重要的概念。高并发是指系统在同一时间处理大量请求的能力,这在Web服务、分布式系统以及大数据处理等场景中尤其重要。而并发编程则是实现高并发的...

    并发编程面试专题_并发编程_面试_源码

    并发编程是Java程序员不可或缺的一项技能,特别是在高并发、大规模分布式系统设计中,对并发的理解与应用至关重要。面试中,对于并发编程的考察往往能够衡量一个程序员在系统性能优化和资源管理上的能力。以下是对...

    java高并发编程第一版

    《Java高并发编程》第一版是一本专注于Java平台上的并发编程技术的专业书籍。在Java开发领域,高并发编程是至关重要的技能,特别是在大型分布式系统、云计算以及互联网应用中。本书旨在帮助开发者理解和掌握如何在...

    epoll_utils-master_rainyv6_高并发_epollmysql_epollmysqlthread_lengt

    标题中的"epoll_utils-master_rainyv6_高并发_epollmysql_epollmysqlthread_lengt" 提到了...通过深入分析和理解这些源码,开发者可以提升自己在高并发网络编程领域的技能,尤其是对Linux系统调用和数据库操作的掌握。

    Java并发编程实战_java并发_

    在Java开发中,理解并掌握并发编程是至关重要的,因为它可以帮助开发者充分利用多核处理器的性能,提升程序的运行效率。 并发编程的核心概念包括线程、同步、锁机制以及并发工具类。首先,线程是并发的基础,Java...

    java高并发编程推荐超好的一本电子书

    根据提供的信息,我们可以深入探讨Java高并发编程的相关知识点。高并发是现代软件系统设计中一个非常重要的方面,尤其是在云计算和大数据处理...希望本文能帮助读者更好地理解和掌握Java高并发编程的核心概念和技术。

    Linux_UNIX 网络编程_12052635_linux并发编程_linux网络编程_源码.zip

    《Linux与UNIX网络编程》是一本深入探讨操作系统层面网络编程的经典教材,主要涵盖了Linux和UNIX系统下的并发编程以及网络通信的实现。...同时,这也有助于提升对操作系统内核、网络协议和并发编程的深入理解。

    Python高级编程和异步IO并发编程

    在"AdvancePython-master"这个资源中,你可能找到这些主题的源码示例,通过实践学习,加深对Python高级特性和并发编程的理解。通过深入研究和实践这些内容,你将能够编写出更高效、更健壮的Python应用程序。

    java高级并发编程32例

    "java高级并发编程32例"这个主题涵盖了Java并发机制的深入理解和实践,旨在帮助Java开发者,尤其是那些追求架构师职位的人员,提升他们在并发编程方面的专业素养。 并发是指一个系统能够同时处理多个任务或执行流的...

    Java并发编程_设计原则和模式(CHM)

    理解Java内存模型(JMM)对于理解并发编程中的可见性和有序性问题至关重要,它定义了线程如何共享和访问内存。 以上就是“Java并发编程_设计原则和模式”主题涵盖的主要知识点。通过深入学习这些内容,开发者可以更...

Global site tag (gtag.js) - Google Analytics