多线程(五)-实战使用并发工具类CyclicBarrier实现并发测试

CyclicBarrier是什么?

JDK1.5开始提供的并发编程,辅助工具类。可用于并发编程的。在项目中往往需要使用工具对项目某一个功能或者接口进行并发测试,使用CyclcBarrier工具可以让线程创建后进入队列阻塞,当队列中的数量达到一定数目的时候,同时运行。

那么我们再来看jdk源码中对它的解释,如图:

如何去使用CyclicBarrier工具类?

接下来我们就使用CyclicBarrier来构建 一个简单的并发测试工具-模拟用户抢购商品,需要导入httpclient工具包:maven:

	<dependency>
			<groupId>org.apache.httpcomponents</groupId>
			<artifactId>httpclient</artifactId>
			<version>4.5</version>
		</dependency>

		<dependency>
			<groupId>org.apache.httpcomponents</groupId>
			<artifactId>httpcore</artifactId>
			<version>4.4.4</version>
		</dependency>

		<dependency>
			<groupId>org.apache.httpcomponents</groupId>
			<artifactId>httpmime</artifactId>
			<version>4.5</version>
		</dependency>

核心代码:

public class DemoThread extends Thread {

	// 使用CycleBarrier 实现同时500个线程并行运行
	private static CyclicBarrier cb = new CyclicBarrier(500);
	@Override
	public void run() {
		HttpClient httpclient = new DefaultHttpClient();
		HttpGet httpGet = new HttpGet("这里填写你需要测试url");
		try {
			cb.await();
			HttpResponse response = httpclient.execute(httpGet);
			System.out.println("进行下单,当前线程的id" + currentThread().getId());
			HttpEntity entity = response.getEntity();
			System.out.println(entity);
		} catch (ClientProtocolException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (BrokenBarrierException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

}

main方法:


public class Main {

	public static void main(String []args)
	{
		System.out.println("并发测试-moni 同时500个用户抢购商品");
		//moni 同时500个用户抢购商品
		for(int i=0;i<500;i++)
		{//countDownLatch.
	      	DemoThread thread=new DemoThread();
	      	thread.start();
		}
		
	}

	
}

以上就是我归纳的对的CyclicBarrier实现,如果有哪些地方有问题,欢迎大家留言指正,感激不尽!

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值