zoukankan      html  css  js  c++  java
  • 自己随便写点东西

     有时候要测试一下某个功能的并发能力,又不要想借助于其他测试工具,索性就自己写简单的demo模拟一个并发请求就最方便了。如果熟悉jemter的测试某接口的并发能力其实更专业,此处只是自己折腾着玩。

    CountDownLatch和CyclicBarrier是jdk concurrent包下非常有用的两个并发工具类,它们提供了一种控制并发流程的手段。其实查看源码它们都是在内部维护了一个计数器控制流程的

    • CountDownLatch:一个或者多个线程,等待其他多个线程完成某件事情之后才能执行;
    • CyclicBarrier:多个线程互相等待,直到到达同一个同步点,再继续一起执行。   

    CountDownLatch和CyclicBarrier的区别

    • CountDownLatch的计数器,线程完成一个记录一个,计数器是递减  计数器,只能使用一次
    • CyclicBarrier的计数器 更像是一个阀门,需要所有线程都到达,阀门才能打开,然后继续执行,计数器是递增  计数器提供reset功能,可以多次使用

       另外Semaphore可以控同时访问的线程个数,通过 acquire() 获取一个许可,如果没有就等待,而 release() 释放一个许可。

      通常我们模拟并发请求,一般都是多开几个线程,发起请求就好了。但是方式,一般会存在启动的先后顺序了,算不得真正的同时并发!怎么样才能做到真正的同时并发呢?是本文想说的点,java中提供了闭锁 CountDownLatch, CyclicBarrier 刚好就用来做这种事就最合适了。

      下面分别使用CountDownLatch和CyclicBarrier来模拟并发的请求

  • 相关阅读:
    noip2015运输计划
    bzoj3595 方伯伯的oj
    noip模拟赛 #3
    圆方树
    AtCoder AGC #4 Virtual Participation
    noip模拟赛 #2
    AtCoder AGC #3 Virtual Participation
    UNR #1 火车管理
    noip模拟赛
    AtCoder AGC #2 Virtual Participation
  • 原文地址:https://www.cnblogs.com/xxj0316/p/10981179.html
Copyright © 2011-2022 走看看