CountDownLatch并发测试

CountDownLatch并发测试CountDownLatch是并发容器JUC下的类,允许一个或多个线程等待直到在其他线程中执行的一组操作完成的同步辅助。使用给定的计数初始化CountDownWatch。由于调用了countdown()方法,wait方法将一直阻塞,直到当前计数为零。之后,所有等待线程都被释放,任何随后的wait调用都会立即返回。这是一种一次性现象——计数无法重置。如果您需要重置计数的版本,请考虑使用cyclic…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

CountDownLatch是并发容器JUC下的类,允许一个或多个线程等待直到在其他线程中执行的一组操作完成的同步辅助。
使用给定的计数初始化CountDownWatch。由于调用了countdown()方法,wait方法将一直阻塞,直到当前计数为零。之后,所有等待线程都被释放,任何随后的wait调用都会立即返回。这是一种一次性现象——计数无法重置。如果您需要重置计数的版本,请考虑使用cyclicBarrier。
CountDownLatch是一种通用的同步工具,可用于多种用途。用一个计数初始化的Countdownloatch用作一个简单的开/关闩锁。或:所有调用的线程都等待在入口等待,直到被调用的线程打开为止。countDown()。一个CountDownLatch初始化为N可以用来做一个线程等待,直到N线程完成一些动作,或某些动作已经完成N次。
Countdownloatch的一个有用属性是,它不要求调用countdown的线程在继续之前等待计数达到零, 它只是防止任何线程在所有线程都可以通过之前继续经过等待。
CountDownLatch 官方API

HttpClientUtil是自己写的一个发送http请求的工具类

public class CountDownLatchTest { 
   

	public static void main(String[] args) { 
   
		final long time = System.currentTimeMillis();
		final String url = "http://localhost/user/";
		int len = 10;
		final CountDownLatch latch = new CountDownLatch(len);
		for (int i = 0; i < len; i++) { 
   
			final int id = i;
			new Thread(new Runnable() { 
   
				public void run() { 
   
					try{ 
   
						Thread.sleep(1000 * id);
						System.out.println("第" + id + "个请求已到位");
						latch.countDown();
						latch.await();
					} catch (InterruptedException e){ 
   
						e.printStackTrace();
					}
					HttpClientUtil.sendGet(url + id);
					long usetime = System.currentTimeMillis() - time;
					System.out.println("到第" + id + "个请求已用时:" + usetime / 1000 + "秒");
				}
			}).start();
		}
	}

}

Jetbrains全家桶1年46,售后保障稳定

主要使用两个方法

public void await()

除非线程被中断,否则导致当前线程等待锁存器倒计数到零。, 导致当前线程等待,直到锁存器倒计数至零,除非线程被中断。
如果当前计数为零,则此方法立即返回。
如果当前计数大于零,则当前线程将被禁用以进行线程调度,并且在发生以下两种情况之一之前处于休眠状态:, 如果当前计数大于零,则当前线程的线程调度目的就退出,一直处于休眠状态的两种情况之一发生:
由于countDown()方法的调用,计数达到零;要么
其他一些线程会中断当前线程。
如果当前线程:
在进入此方法时设置其中断状态;要么
在等待时被打断
然后抛出InterruptedException并清除当前线程的中断状态。

public void countDown()

减少锁存器的计数,如果计数达到零则释放所有等待的线程。
如果当前计数大于零,则递减。如果新计数为零,则重新启用所有等待线程以进行线程调度。
如果当前计数等于零,则没有任何反应。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/234070.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • tensorflow2.0手写数字识别(tensorflow手写体识别)

    本节笔记作为Tensorflow的HelloWorld,用MNIST手写数字识别来探索Tensorflow。笔记的内容来自Tensorflow中文社区和黄文坚的《Tensorflow实战》,只作为自己复习总结。

    2022年4月17日
    133
  • ASP.NET知识点总结[通俗易懂]

    ASP.NET知识点总结[通俗易懂]ASP.NET知识点总结1、ASP.Net的特色与优势2、几对概念3、解决方案构成4、系统对象与状态管理5、控件的分类6、站点地图7、系统导航8、母版页9、系统框架10、数据绑定11、数据源控件12、数据绑定控件GridView数据查询与展示、删除DetailsView展示多选光棒效果13、数据验证控件14、文件上载15、其他服务器控件DataList查询与展示16、基于SQL语句分页17…

    2022年7月11日
    12
  • 什么样的黑客能用python盗QQ号[通俗易懂]

    什么样的黑客能用python盗QQ号[通俗易懂]目录一科普二、为何Python会被选用为黑客语言呢?三、Python对于黑客攻击的优点四、Python对于黑客攻击用途五、那么,Python难学么?六、精通Python需要多长时间?七、Python主要应用领域有哪些?一科普注:以下“爬虫”均指“垂直爬虫”1.非爬虫方向的技术转行做爬虫是否可行?可行,而且有一定的基础会很容易上手,至于深入的部分就看自己了。2.非技术转行做爬虫是否可行?可行,但我认为较难,因为爬虫做深了以后是需要你了解各种相关领

    2022年7月20日
    35
  • 开发的浏览器颠覆微软,引爆了一场互联网大战

    开发的浏览器颠覆微软,引爆了一场互联网大战

    2021年9月15日
    68
  • 第一范式第二范式第三范式「建议收藏」

    第一范式第二范式第三范式「建议收藏」关系数据库中的关系必须满足一定的要求。满足不同程度要求的为不同范式。数据库的设计范式是数据库设计所需要满足的规范。只有理解数据库的设计范式,才能设计出高效率、优雅的数据库,否则可能会设计出错误的数据库. 目前,主要有六种范式:第一范式、第二范式、第三范式、BC范式、第四范式和第五范式。满足最低要求的叫第一范式,简称1NF。在第一范式基础上进一步满足一些要求的为第二范式,简称2NF。其余依此类推

    2022年5月10日
    40

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号