并发 订阅
并发,在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。 展开全文
并发,在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。
信息
外文名
Concurrent
拼    音
bìng fā
中文名
并发
并发词语概念
词目:并发基本解释:[] 指由己患的疾病引起[另一种病]。并发症。 [1]  引证解释:1. 同时开放。晋 傅玄 《傅子》卷三:“晔若春华之并发,馥若秋兰之俱茂。”2. 谓跟着发生。 [1] 
收起全文
精华内容
下载资源
问答
  • Thread-0 call()方法执行中... 返回结果 1 main main()方法执行完成
  • JAVA高并发的三种实现

    万次阅读 多人点赞 2018-07-23 10:50:59
    是用它可以解决一切并发问题,但是,对于系统吞吐量要求更高的话,我们这提供几个小技巧。帮助大家减小锁颗粒度,提高并发能力。 初级技巧-乐观锁 乐观锁使用的场景是,读不会冲突,写会冲突。同时读的频率远大于...

    提到锁,大家肯定想到的是sychronized关键字。是用它可以解决一切并发问题,但是,对于系统吞吐量要求更高的话,我们这提供几个小技巧。帮助大家减小锁颗粒度,提高并发能力。

    初级技巧-乐观锁

    乐观锁使用的场景是,读不会冲突,写会冲突。同时读的频率远大于写。

     悲观锁的实现

    悲观的认为所有代码执行都会有并发问题,所以将所有代码块都用sychronized锁住

    乐观锁的实现

    乐观的认为在读的时候不会产生冲突为题,在写时添加锁。所以解决的应用场景是读远大于写时的场景。

    中级技巧-String.intern()

    乐观锁不能很好的解决大量的写冲突的问题,但是很多场景下,锁只是针对某个用户或者某个订单。 比如一个用户先创建session,才能进行后面的操作,但是由于网络的问题,创建session的请求和后续请求几乎同时到达,而并行线程可能会先处理后面的请求。一般情况需要对用户sessionMap加锁,比如上面的乐观锁。在这样的场景下,可以将锁限定在用户本身上,即原来的

    这个比较类似行锁和数据库表锁的概念。显然行锁的并发能力比表锁的高很多。

    实用String.intern();是这种方式的具体实现。类String维护了一个字符串池。当调用intern方法时,如果池已经包含一个等于此String对象的字符串(该对象由equals(Object)方法确定),则返回池中的字符串。可见,当String 相同时,总返回同一个对象,因此就实现了对同一用户加锁。由于所的颗粒度局限于具体用户,使得系统获得最大程度的并发。

    CopyOnWriteMap?

     

    既然说到了“类似于数据库中的行锁的概念”,就不得不提一下MVCC,Java中CopyOnWrite类实现了MVCC。Copy On Write是这样一种机制。当我们读取共享数据的时候,直接读取,不需要同步。当我们修改数据的时候,我们就把当前数据Copy一份副本,然后在这个副本 上进行修改,完成之后,再用修改后的副本,替换掉原来的数据。这种方法就叫做Copy On Write。

     

    但是,,,JDK并没有提供CopyOnWriteMap,为什么?下面有个很好的回答,那就是已经有了ConcurrentHashMap,为什么还需要CopyOnWriteMap?

     

    高级技巧 - 类ConcurrentHashMap

    String.inter()的缺陷是类 String 维护一个字符串池是放在JVM perm区的,如果用户数特别多,导致放入字符串池的String不可控,有可能导致OOM错误或者过多的Full GC。怎么样能控制锁的个数,同时减小粒度锁呢?直接使用Java ConcurrentHashMap?或者你想加入自己更精细的控制?那么可以借鉴ConcurrentHashMap的方式,将需要加锁的对象分为多个bucket,每个bucket加一个锁,伪代码如下:

     

     

     

     

     

     

    展开全文
  • Go并发原理

    万次阅读 2019-03-05 10:59:03
    Go语言是为并发而生的语言,Go语言是为数不多的在语言层面实现并发的语言;也正是Go语言的并发特性,吸引了全球无数的开发者。 并发(concurrency)和并行(parallellism) 并发(concurrency):两个或两个以上的任务在...

    Go语言是为并发而生的语言,Go语言是为数不多的在语言层面实现并发的语言;也正是Go语言的并发特性,吸引了全球无数的开发者。

    并发(concurrency)和并行(parallellism)

    并发(concurrency):两个或两个以上的任务在一段时间内被执行。我们不必care这些任务在某一个时间点是否是同时执行,可能同时执行,也可能不是,我们只关心在一段时间内,哪怕是很短的时间(一秒或者两秒)是否执行解决了两个或两个以上任务。

    **并行(parallellism):**两个或两个以上的任务在同一时刻被同时执行。

    并发说的是逻辑上的概念,而并行,强调的是物理运行状态。并发“包含”并行。

    (详情请见:Rob Pike 的PPT

    Go的CSP并发模型

    Go实现了两种并发形式。第一种是大家普遍认知的:多线程共享内存。其实就是Java或者C++等语言中的多线程开发。另外一种是Go语言特有的,也是Go语言推荐的:CSP(communicating sequential processes)并发模型。

    CSP并发模型是在1970年左右提出的概念,属于比较新的概念,不同于传统的多线程通过共享内存来通信,CSP讲究的是“以通信的方式来共享内存”。

    请记住下面这句话:
    Do not communicate by sharing memory; instead,

    展开全文
  • 写【高并发专题】有一段时间了,一些读者朋友留言说,并发编程很难,学习了很多的知识,但是在实际工作中却无从下手。对于一个线上产生的并发问题,又不知产生这个问题的原因究竟是什么。对于并发编程,感觉上似乎是...

    写在前面

    写【高并发专题】有一段时间了,一些读者朋友留言说,并发编程很难,学习了很多的知识,但是在实际工作中却无从下手。对于一个线上产生的并发问题,又不知产生这个问题的原因究竟是什么。对于并发编程,感觉上似乎是掌握了,但是真正用起来却不是那么回事!

    其实,造成这种现象的本质原因就是没有透彻的理解并发编程的精髓,而学好并发编程的关键是需要弄懂三个核心问题:分工、同步和互斥

    分工

    比较官方的解释为:分工就是将一个比较大的任务,拆分成多个大小合适的任务,交给合适的线程去完成,强调的是性能。

    如果你还不能够理解什么是分工,这里,我们可以做一个假设。假设你是一个XXX上市公司的CEO,你的工作是如何管理好你的公司。但是,就如何管理好公司而言,涉及到的任务就比较多了,我们可以将其看做一个很大的任务,这个很大的任务,细看的话可以包括:人员招聘和管理、产品设计和开发、运营和推广、公司税务等等。那细化后这么多的任务交给你一个人去做,想必你一定是崩溃的。即使你能够挺住,估计你一个人把这所有的任务完成,那黄花菜也就凉了!到时,估计你就会偷偷的躲在角落里唱“凉凉”了。。。

    所以,如果你真的想管理好你的公司,你就需要将这些任务分解,分工细化,将人员招聘和管理的任务交给人力资源部门去完成,将产品的设计交给设计部门去完成,将产品的开发交给开发部门去完成,将运营和推广交给运营和市场部门去完成,将公司税务交给财务部门去完成。此时,你的任务就是及时了解各个部门的工作情况,统筹并协调各部门的工作,并思考如何规划公司的未来。

    其实,这里你将管理公司的任务拆解、细化分工之后,你会发现,其实各部门之间的工作是并行执行的。比如:人力资源部门在管理员工的绩效考核时,同时产品设计和开发部门正在设计和开发公司的产品,与此同时,公司的运营正在和设计与开发沟通如何更好的完善公司的产品,而推广部门正在加大力度宣传和推广公司的产品。而财务部门正在统计和计算公司的各种财务报表等。一切都是那么的有条不紊!
    在这里插入图片描述
    所以,安排合适的人去做合适的事情,在实际工作中是非常重要的。这映射到并发编程领域也是同样的道理。如果将所有的任务交给一个线程执行,就好比将公司的所有事情交给你一个人去做一样。等到把事情做完了,黄花菜也凉了。所以,在并发编程中,我们同样需要将任务进行拆解,分工给合适的线程去完成。

    在这里插入图片描述

    在并发编程领域,还需要注意一个问题就是:分工给合适的线程去做。 也就是说,应该主线程执行的任务不要交给子线程去做,否则,是解决不了问题的。这就好比一家公司的CEO将如何规划公司的未来交给一个产品开发人员去做一样,这不仅不能规划好公司的未来,甚至会与公司的价值观背道而驰。

    在JavaSDK中的:Executor、Fork/Join和Future都是实现分工的一种方式。

    同步

    在并发编程中的同步,主要指的是一个线程执行完任务后,如何通知其他的线程继续执行,强调的是性能。

    将任务拆分,并且合理的分工给了每个人,接下来就是如何同步每个人的任务了。

    假设小明是一名前端开发人员,他渲染页面的数据需要等待小刚的接口完成,而小刚写接口又需要等待小李的服务开发完成。也就是说,任务之间是存在依赖关系的,前面的任务完成后,才能进行后面的任务。

    对于实际工作中,这种任务的同步,大多数靠的是人与人之间的沟通,小李的服务写完了,告诉小刚,小刚则马上进行接口开发,等小刚的接口开发完成后,又告诉了小明,小明马上调用接口将返回的数据渲染在页面上。

    在这里插入图片描述

    这种同步机制映射到并发编程领域,就是一个线程的任务执行完毕之后,通知其他的后续线程执行任务。

    对于这种线程之间的同步,我们可以使用下面的 if 伪代码来表示。

    if(前面的任务完成){
        执行当前任务
    }else{
        继续等待前面任务的执行
    }
    

    如果为了更能够及时的判断出前面的任务是否已经完成,我们也可以使用 while 伪代码来表示。

    while(前面的任务未完成){
        继续等待前面任务的执行
    }
    执行当前任务
    

    上述伪代码表示的意义是相同的:当线程执行的条件不满足时,线程需要继续等待,一旦条件满足,就需要唤醒等待的线程继续执行。

    在并发编程领域,一个典型的场景就是生产者-消费者模型。当队列满时,生产者线程需要等待,队列不满时,需要唤醒生产者线程;当队列为空时,消费者线程需要等待,队列不空时,需要唤醒消费者。我们可以使用下面的伪代码来表示生产者-消费者模型。

    • 生产者
    while(队列已满){
        生产者线程等待
    }
    唤醒生产者
    
    • 消费者
    while(队列为空){
        消费者等待
    }
    唤醒消费者
    

    在Java的SDK中,提供了一些实现线程之间同步的工具类,比如说:CountDownLatch、 CyclicBarrier 等。

    互斥

    同一时刻,只允许一个线程访问共享变量,强调的是线程执行任务的正确性。

    在并发编程领域,分工和同步强调的是执行任务的性能,而线程之间的互斥则强调的是线程执行任务的正确性,也就是线程的安全问题。如果多个线程同时访问同一个共享变量,则可能会发生意想不到的后果,而这种意想不到的后果主要是由线程的可见性、原子性和有序性问题产生的。而解决可见性、原子性和有序性问题的核心,就是互斥。

    关于互斥,我们可以用现实中的一个场景来描述:多个岔路口的车辆需要汇入一条道路中,而这条道路一次只能允许通过一辆车,此时,车辆就需要排队依次进入路口。

    Java中提供的synchronized、Lock、ThreadLocal、final关键字等都可以解决互斥的问题。

    例如,我们以synchronized为例来说明如何进行线程间的互斥,伪代码如下所示。

    //修饰方法
    public synchronized void xxx(){
        
    }
    //修饰代码块
    public void xxx(){
        synchronized(obj){
            
        }
    }
    //修饰代码块
    public void xxx(){
        synchronized(XXX.class){
            
        }
    }
    //修饰静态方法
    public synchronized static void xxx(){
        
    }
    

    总结

    并发编程旨在最大限度的利用计算机的资源,提高程序执行的性能,这需要线程之间的分工和同步来实现,在保证性能的同时,又需要保证线程的安全,这就又需要保证线程之间的互斥性。而并发编程的难点问题,往往又是由可见性、原子性和有序性问题导致的。所以,我们在学习并发编程时,一定要先弄懂线程之间的分工、同步和互斥。

    最后,附上并发编程需要掌握的核心技能知识图,祝大家在学习并发编程时,少走弯路。

    在这里插入图片描述

    展开全文
  • 并发测试工具

    万次阅读 热门讨论 2019-06-15 14:40:47
    并发测试工具 一、Postman Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便...

    并发测试工具

    一、Apache Bench简介

    ApacheBench 是 Apache 服务器自带的一个web压力测试工具,简称ab。ab又是一个命令行工具,对发起负载的本机要求很低,根据ab命令可以创建很多的并发访问线程,模拟多个访问者同时对某一URL地址进行访问,因此可以用来测试目标服务器的负载压力。总的来说ab工具小巧简单,上手学习较快,可以提供需要的基本性能指标,但是没有图形化结果,不能监控。

     

    使用说明

    用法很简单,使用ab命令就可以

    参数说明:
    格式:ab [options] [http://]hostname[:port]/path
    ​
    -n requests Number of requests to perform     //本次测试发起的总请求数
    -c concurrency Number of multiple requests to make   //一次产生的请求数(或并发数)
    -t timelimit Seconds to max. wait for responses    //测试所进行的最大秒数,默认没有时间限制。
    -r Don't exit on socket receive errors.     // 抛出异常继续执行测试任务 
    -p postfile File containing data to POST  //包含了需要POST的数据的文件,文件格式如“p1=1&p2=2”.使用方法是 -p 111.txt
    ​
    -T content-type Content-type header for POSTing
    //POST数据所使用的Content-type头信息,如 -T “application/x-www-form-urlencoded” 。 (配合-p)
    -v verbosity How much troubleshooting info to print
    //设置显示信息的详细程度 – 4或更大值会显示头信息, 3或更大值可以显示响应代码(404, 200等), 2或更大值可以显示警告和其他信息。 -V 显示版本号并退出。
    -C attribute Add cookie, eg. -C “c1=1234,c2=2,c3=3” (repeatable)
    //-C cookie-name=value 对请求附加一个Cookie:行。 其典型形式是name=value的一个参数对。此参数可以重复,用逗号分割。
    提示:可以借助session实现原理传递 JSESSIONID参数, 实现保持会话的功能,如-C ” c1=1234,c2=2,c3=3, JSESSIONID=FF056CD16DA9D71CB131C1D56F0319F8″ 。
    -w Print out results in HTML tables  //以HTML表的格式输出结果。默认时,它是白色背景的两列宽度的一张表。
    -i Use HEAD instead of GET
    -x attributes String to insert as table attributes
    -y attributes String to insert as tr attributes
    -z attributes String to insert as td or th attributes
    -H attribute Add Arbitrary header line, eg. ‘Accept-Encoding: gzip’ Inserted after all normal header lines. (repeatable)
    -A attribute Add Basic WWW Authentication, the attributes
    are a colon separated username and password.
    -P attribute Add Basic Proxy Authentication, the attributes are a colon separated username and password.
    -X proxy:port Proxyserver and port number to use
    -V Print version number and exit
    -k Use HTTP KeepAlive feature
    -d Do not show percentiles served table.
    -S Do not show confidence estimators and warnings.
    -g filename Output collected data to gnuplot format file.
    -e filename Output CSV file with percentages served
    -h Display usage information (this message)

    平时使用 -n 说明请求次数,-c 说明并发量就可以了

    结果解析

    Document Path:          /index.html
    Document Length:        17784 bytes     #请求文档大小
     
    Concurrency Level:      10              #并发数
    Time taken for tests:   11.898681 seconds    #全部请求完成耗时
    Complete requests:      100            #全部请求数     
    Failed requests:        0
    Write errors:           0
    Total transferred:      1805900 bytes      #总传输大小
    HTML transferred:       1778400 bytes
    Requests per second:    8.40 [#/sec] (mean)    #每秒请求数(平均)
    Time per request:       1189.868 [ms] (mean)  #每次并发请求时间(所有并发)
    Time per request:       118.987 [ms] (mean, across all concurrentrequests
    Transfer rate:          148.17 [Kbytes/sec] received    #传输速率
     
    Connection Times (ms)           #连接时间
                          min mean[+/-sd]  median(中位值)  max
    Connect: (#连接)     59   73  11.9     72     132
    Processing: (#处理)    86   998538.7     938   2288
    Waiting: (#等待)     63   135 106.8     94    663
    Total:                 155  1072540.6    1004   2362
     
    在一定比例的请求服务时间
     
     50%   1004
     66%   1260
     75%   1452
     80%   1492
     90%   1923
     95%   2078
     98%   2352
     99%   2362
     100%  2362 (longest request)

     

    三、JMeter

    Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测 试但后来扩展到其他测试领域。 它可以用于测试静态和动态资源例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库, FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来在不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。

    使用说明

    由于JMeter功能非常强大,所以此处引用老_张的博客进行说明

    《jmeter:菜鸟入门到进阶系列》

    1、基础介绍 简单介绍jmeter的元件组成,作用等基础知识;

    2、录制脚本 简述了jmeter录制脚本的2种方式;

    3、元件的作用域及执行顺序 jmeter各元件的作用域及执行的顺序;

    4、Sampler之SOAP/XML-RPC Request 取样器中关于SOAP/XML-RPC Request的用法;

    5、Sampler之HTTP请求 取样器中关于HTTP请求的用法;

    6、http请求之content-type 取样器中关于HTTP请求的补充说明;

    7、Sample之JDBC Request 取样器中关于JDBC请求的用法;

    8、JDBC Request之Query Type 取样器中关于JDBC请求的补充说明;

    9、目录结构 jmeter目录结构等简单介绍;

    10、参数化 jmeter参数化的4种方式;

    11、关联之正则表达式提取器 jmeter关联之正则表达式提取器的用法;

    12、关联之XPath Extractor jmeter关联之XPath Extractor的用法;

    13、配置元件之计数器 jmeter配置元件中关于计数器的用法;

    14、配置元件之HTTP属性管理器 jmeter配置元件中关于http属性管理器的用法;

    15、函数助手 jmeter内置函数助手的简单介绍;

    16、定时器 jmeter八大元件之定时器的介绍;

    17、断言 jemter八大元件之断言的介绍;

    18、逻辑控制器 jmeter八大元件之逻辑控制器的介绍;

    19、常见问题及解决方法 jmeter使用过程中常见问题及解决方案的说明;

    20、阶梯式加压测试 jmeter扩展插件Stepping Thread Group的简单介绍;

    21、jmeter常用插件介绍 jmeter插件Transactions per Second、Response Times Over Time、PerfMon Metrics Collector的下载安装及使用;

    22、内存溢出原因及解决方法 关于jmeter做压力负载测试时候遇到内存溢出的原因和解决方法;

    23、jmeter分布式测试 关于高并发情况下分布式测试的一些技术点和注意事项;

    24、dubbo接口测试 利用jmeter的dubbo插件进行dubbo接口测试和性能测试;

    25、linux环境运行jmeter并生成报告 linux环境,非GUI模式运行jmeter脚本进行性能测试,并生成测试报告的介绍;

    26、jmeter生成HTML格式性能测试报告 jmeter生成HTML格式的性能测试报告的2种方式,以及可视化图表解析内容;

    结果解析

    展开全文
  • 并发操作之——并发、并行

    千次阅读 2021-08-30 15:30:24
    并发操作 并发操作之——并发、并行 并发操作之——并发、并行并发操作前言一、什么是并发?什么是并行?并发:并行:二、并发和并行举例总结 前言 并发操作之——并发、并行。 一、什么是并发?什么是并行? ...
  • java并发编程之-JUC并发容器的使用

    万次阅读 2019-08-11 15:11:06
    在 Java 5.0 提供了java.util.concurrent(简称JUC)并发编程容器包,在此包中增加了在并发编程中很常用的工具类,用于定义类似于线程的自定义子系统,包括线程池,异步 IO 和轻量级任务框架;还提供了设计用于多线程上下...
  • 例子主要包括SocketAsyncEventArgs通讯封装、服务端实现日志查看、SCOKET列表、上传、下载、远程文件流、吞吐量协议,用于测试SocketAsyncEventArgs的性能和压力,最大连接数支持65535个长连接,最高命令交互速度...
  • Java并发编程精讲

    万人学习 2019-09-28 15:16:34
    课程会讲解Java中并发相关技术的基础、原理和应用,从线程安全、线程(池), 锁实现和并发容器等高并发Java实现,去深入理解在并发编程中, 一些最容易被忽视的点,这些点也是我在多年编程经验中实际用到, 对于每个...
  • Golang入门(4):并发

    万次阅读 2021-06-07 09:24:59
    Golang入门(4):并发 摘要 并发程序指同时进行多个任务的程序,随着硬件的发展,并发程序变得越来越重要。Web服务器会一次处理成千上万的请求,这也是并发的必要性之一。Golang的并发控制比起Java来说,简单了不少...
  • 并发编程-01并发初窥

    千次阅读 2019-02-16 02:08:33
    说来惭愧,一直没有系统的梳理过并发编程的知识,这次借着学习_Jimin_老师的《Java并发编程与高并发解决方案》课程的机会,结合以往工作中的使用,好好的梳理下并发编程与高并发的知识,形成一个较为完善的并发编程...
  • Java 并发并发背景

    万次阅读 多人点赞 2016-12-03 22:24:51
    并发与操作系统的生命历程息息相关。进程的出现,使得程序状态的保存变为现实,为进程间的切换提供了可能,实现了操作系统的并发,大大提高资源利用率。之后,人们对实时性又有了更高的要求。由于一个进程由若干个子...
  • 并发操作之——并发编程三要素

    千次阅读 2021-09-04 10:44:27
    并发操作 并发操作之——并发编程三要素。 并发操作之——并发编程三要素并发操作前言一、原子性二、有序性:三、可见性:总结 前言 并发操作之——并发编程三要素。 一、原子性 一个不可再被分割的颗粒,原子性指...
  • 冰河整理的这份并发编程核心技能,靠它进大厂,效果杠杠的,冰河强烈建议收藏!!
  • 该套餐包含两门课程,netty课程和并发编程课程
  • 并发操作之——并发编程实践

    千次阅读 2021-09-17 15:07:57
    并发操作 并发操作之——BlockingQueue. 并发操作之——BlockingQueue并发操作一、编程里面解决生产消费者模型的几种方式1、wait() / notify()方法2、await() / signal()方法3、Semaphore信号量4、BlockingQueue...
  • 并发编程系列之并发编程的认识

    万次阅读 2020-05-21 14:36:46
    一个目的,为了让程序员运行的更快,但是有一点我们要知道,并不是启动越多的线程就能让程序更大限度的并发执行,在并发编程的开发中,如果希望使用更多的线程来加快程序的运行,一般我们会面临下面几种挑战:上下文...
  • Java并发API案例分析之并发设计原理

    千次阅读 多人点赞 2021-01-15 12:07:58
    并发、并行、同步、锁、线程安全……这一篇我记录了学习并发设计原理的关键知识,还有一些常用重要的Java并发编程API,学习一些关于并发程序设计的原理,弄懂来龙去脉,相对更加深入地理解并这部分知识。在学习理论...
  • 这就是最正宗的《Java 并发编程实战》带目录 用福昕阅读器打开查看特别的清晰
  • 微服务+高并发

    2020-08-14 10:34:02
    微服务+高并发
  • Java并发编程实战

    2020-05-28 16:33:33
    课程介绍: 对于一个Java程序员而言,能否熟练掌握并发编程是判断他优秀与否的重要标准之一。因为并发编程是Java语言中最为晦涩的知识点,它涉及操作系统、内存、CPU、编程语言等多方面的基础能力,更为考验一个...
  • Java高并发秒杀API(四)之高并发优化

    万次阅读 多人点赞 2017-10-06 17:07:54
    Java高并发秒杀API(四)之高并发优化1. 高并发优化分析 关于并发 并发性上不去是因为当多个线程同时访问一行数据时,产生了事务,因此产生写锁,每当一个获取了事务的线程把锁释放,另一个排队线程才能拿到写锁,QPS...
  • 数据库并发控制之并发调度

    千次阅读 2018-10-25 01:08:22
    一、并发调度的可串行性 二、两段锁协议 三、封锁的粒度 四、其他并发控制机制
  • Python并发管理

    2018-02-07 20:55:48
    Python并发管理视频培训教程,该课程主要分享Python并发方面的知识,包括线程、协程、进程三大模块,每个模块都会进行详细讲解,包括线程的创建、总结、线程内死锁、堆栈、协程的引入、迭代器、协程原理、队列、进程...
  • jmeter接口并发测试实例

    万次阅读 多人点赞 2019-02-23 15:18:18
    jmeter并发测试实例,测试项目结构图如下: 1.新建测试计划,选中测试计划,右键,添加线程组 2.添加配置元件-用户定义的变量,用来放置ip和端口参数 3.添加配置元件-CSV 数据文件设置,将测试数据存在csv...
  • 我是全网最硬核的高并发编程作者,CSDN最值得关注博主,全网最硬核的基于可视化的多数据源数据异构中间件作者,也许现在就是,也是不久的将来就是,大家同意吗?

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,528,755
精华内容 611,502
关键字:

并发