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)
上一篇 2025年6月12日 上午10:22
下一篇 2025年6月12日 上午11:01


相关推荐

  • 【Altium Designer】PCB设计中利用board cutout做板子开孔开槽「建议收藏」

    【Altium Designer】PCB设计中利用board cutout做板子开孔开槽「建议收藏」有时候在pcb板子设计完成后,为了在使用中固定pcb板子,需要在pcb板子四个角开孔,3D视图中如下图所示。实现的方法不止一个,本文主要记录用boardcutout实现开圆形槽的方法,使用软件为AD18。1.选中mechanical1层或者Keep-outlayer层,先画出和孔径大小相同的圆;如下图2.设计-板子形状-定义板切割(快捷键DSC),在模式下沿着圆边点…

    2026年3月5日
    8
  • R语言描述性统计

    R语言描述性统计R 语言描述性统计在做数据分析时 一般先会对数据进行描述性统计分析 以便于描述该数据的各种特征及其所代表的总体的特征 描述性统计分析包括对数据的集中趋势 离散程度以及分布进行分析 集中趋势统计量 均值 Mean 中位数 Median 众数 Mode 百分位数离散趋势统计量 标准差 sd 方差 var 极差 range 变异系数 CV 标准误 样本校正平方和 CSS 样本未校正

    2026年3月18日
    2
  • jbpm工作流 php,jBPM工作流组件

    jbpm工作流 php,jBPM工作流组件jBPM工作流组件如下图所示-1.开始事件它是该过程的起始节点。每个进程只有一个启动节点。此节点仅包含一个没有任何传入连接的传出连接。它具有以下属性:Id:节点的ID,它也应该是独一无二的。Name:节点的名称。2.结束事件它是流程的结束节点。进程可以包含多个End事件。此节点仅包含一个传入连接,不包含传出连接。它具有以下属性:Id:节点的ID,它也应该是独一无二的。Name:节点…

    2025年10月17日
    4
  • System.setProperty(),System.setProperty

    System.setProperty(),System.setPropertySystem.getProperties()获得所有的系统变量System.getProperty(“os.name”)获取指定的系统变量(获取系统=windows8.1)System.setProperty(“koow”,”123″)储存在系统变量中,变量名为koow,值为123System.getProperty(“koow”)获取指定的系统变量(获取koow=12

    2022年7月12日
    22
  • 支持向量机与支持向量回归(support vector machine and support vector regression)

    支持向量机与支持向量回归(support vector machine and support vector regression)支持向量机和支持向量回归是目前机器学习领域用得较多的方法,不管是人脸识别,字符识别,行为识别,姿态识别等,都可以看到它们的影子。在我的工作中,经常用到支持向量机和支持向量回归,然而,作为基本的理论,却没有认真地去梳理和总结,导致有些知识点没有彻底的弄明白。这篇博客主要就是想梳理一遍支持向量机和支持向量回归的基础理论知识,一个是笔记,另一个是交流学习,便于大家共勉。凸集、凸函数、凸优化凸集:如果集合…

    2022年5月29日
    34
  • 关于python中lambda函数的描述_Python全局变量

    关于python中lambda函数的描述_Python全局变量PythonLambda表达式

    2022年10月9日
    5

发表回复

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

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