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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 【矩阵论】单射、满射与双射

    【矩阵论】单射、满射与双射映射;Mapping映射是两个集合中的一种特殊的对应关系,即如果按照某种对应法则,对于集合A中的任何一个元素,在集合B中都有惟一的元素与它对应,那么这样的对应(包括对应法则)叫做集合A到集合B的映射。其中,A中的元素称为原像,B中的元素称为A中元素的像(imageimage)。单射、满射与双射;Injection,surjectionandbijection单射:在英语中称为injection

    2022年5月2日
  • 删除office2016专业版多余组件

    删除office2016专业版多余组件一、首先打开控制面板,选择卸载程序,选中office2016专业版,如图所示,右击选择“更改”进入如下的图片,选择添加或删除功能选择要删除或卸载的组件,点击选择“不可用”;然后就会出现如图所示的图片最后关闭即可…

    2022年7月19日
  • Java 中初始化 List 集合的 6 种方式!「建议收藏」

    Java 中初始化 List 集合的 6 种方式!「建议收藏」Java 中初始化 List 集合的 6 种方式!

    2022年4月21日
  • powerDesigner生成HTML报表

    powerDesigner生成HTML报表报告-GenerateReport

    2022年9月16日
  • 滑动平均值滤波_m点滑动平均滤波器

    滑动平均值滤波_m点滑动平均滤波器   关于数据采集的滑动平均值滤波的算法      —王超杰    以ADC为例,采集口的模拟量可能夹杂着不同频段,不同峰值的干扰信号,这些干扰信号和要采集的模拟量互相干扰,那么ADC采集的数据量就会偏移原有的真实结果。那么通过硬件与数字滤波两种手段可大大减少采集误差,提高精度。    一般滤波均通过程序算法滤除,其包括去极值滤波、算术平均值滤波、滑动平均值滤波、加…

    2022年10月28日
  • eruda.js 移动端调试神器使用教程(eruda)

    eruda.js 移动端调试神器使用教程(eruda)在日常的移动端开发时,一般都是试用chrome浏览器的移动端模式进行开发和调试,只有在chrome调试完成,没有问题了才会上到真机测试,移动端开发的一大问题就在于此,各种品牌各种型号手机,手机中各种类型的浏览器APP…还好移动端的相对一致点,但是往往都会有一些各种各样的坑,这时候就蛋疼了,明明chrome调试工具中是正常的,一到某个浏览器中就炸了,怎么办,又无法像在chrome中使用调试工具进行调试,只能通过alert()弹窗来调试,有什么办法可以像PC上那样清晰,可视化的调试呢?使用示例://#

    2022年10月26日

发表回复

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

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