自己随便写点东西

Posted xxj0316

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自己随便写点东西相关的知识,希望对你有一定的参考价值。

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

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

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

CountDownLatch和CyclicBarrier的区别

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

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

 

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

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

以上是关于自己随便写点东西的主要内容,如果未能解决你的问题,请参考以下文章

今天一天课,随便写点吧/xk

随便写点给当初那个毫无计算机知识的自己吧

后知后觉也不错

给自己定个小目标:每天写点东西

不上课,随便写点,权当聊天了

2017-7-5 : 快下班了写点东西