并发包工具

第一.CountDownLatch

让一些线程阻塞知道另外一个线程完成一系列操作后才被唤醒
CountDownLatch主要有2个方法,当一个或多个线程调用await方法时,调用线程会被阻塞。当其他线程调用countDown方法会将计数器减一(调用countDown方法的线程不会阻塞),

当计数器的值变为0时,因调用await方法被阻塞的线程会被唤醒,继续执行。

public class CountDownLatchDemo {
    public static void main(String[] args) throws Exception{
        CountDownLatch countDownLatch = new CountDownLatch(10);
        for (int i = 1; i <=10; i++) {
            int finalI = i;
            new Thread(()->{
                System.out.println(Thread.currentThread().getName()+":"+ finalI);
                countDownLatch.countDown();
            },String.valueOf(i)).start();
        }
        countDownLatch.await();
        System.out.println("子线程结束,主线程main开始");
    }
}

第二、Semaphore

(计数信号量)Semaphore
信号量主要用于两个目的,一个是用于多个共享资源的互斥使用,另一个用于并发线程数的控制。

比如某商场就 5 个停车位,每个停车位只能停一辆车,如果这个时候来了 10 辆车,必须要等前面有空的车位才能进入。

public class SemaphoreDemo {
    public static void main(String[] args) throws Exception{
        //模拟5停车位
        Semaphore semaphore = new Semaphore(5);//同步关键类,构造方法传入的数字是多少,则同一个时刻,只运行多少个进程同时运行制定代码
        //模拟10个车子
        for (int i = 0; i < 10; i++) {
            new Thread(()->{
                try {
                    /**
                     * 在 semaphore.acquire() 和 semaphore.release()之间的代码,同一时刻只允许制定个数的线程进入,
                     * 因为semaphore的构造方法是1,则同一时刻只允许一个线程进入,其他线程只能等待。
                     *
                     * */
                    semaphore.acquire();
                    System.out.println(Thread.currentThread().getName()+"\t 抢到车位");
                    Thread.sleep(3000);
                    System.out.println(Thread.currentThread().getName()+"\t停车3s后离开车位");
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }finally {
                    semaphore.release();
                }
            },String.valueOf(i)).start();
        }
    }
}

原文地址:https://www.cnblogs.com/cxyyh/p/11569007.html

时间: 2024-11-01 16:53:32

并发包工具的相关文章

超简单的windows发包工具—小兵以太网测试仪

小兵以太网测试仪 是一款windows平台下的发包工具. 该软件小巧.易用.开源.免费. 该软件支持各种常见报文(包括arp ip icmp udp tcp等)的编辑与发送,支持发包速率控制. 同时,该软件还具有抓包功能. 软件主界面如下: 好了,下面我们就一起来看看该软件的各个功能点吧. 一. 新建或编辑报文 在软件主界面右边的列表框中,点右键,根据菜单提示,即可进行新建报文/编辑已有报文的操作了. 报文编辑的界面如下: . 支持 以太网(包括vlan).arp.ip.icmp.udp.tcp

windows发包工具—小兵以太网测试仪

小兵以太网测试仪 是一款windows平台下的发包工具. 该软件小巧.易用.开源.免费. 该软件支持各种常见报文(包括arp ip icmp udp tcp等)的编辑与发送,还可以控制发包速率. 同时,该软件还具有抓包功能. 软件主界面如下: 好了,下面我们就一起来看看该软件的各个功能点吧. 一.新建或编辑报文 在软件主界面右边的列表框中,点右键,根据菜单提示,即可进行新建报文/编辑已有报文的操作了. 报文编辑的界面如下: . 支持 以太网(包括vlan).arp.ip.icmp.udp.tcp

通过HTTP发包工具了解HTTP协议

一.HTTP.pl功能简介 HTTP.pl perl编写的发包工具,简化版本curl,像curl致敬(唉,“致敬”都被于妈玩坏了). 该发包工具支持HEAD,GET,METHOD三种基本请求方法,能处理 get/post方法的表单处理.文件上传请求.基本认证,能指定HTTP请求头,指定请求超时时间,指定自动Follow重定向的次数及使用代理. 使用的perl模块 (1)URI 相关模块 : 处理URI对象,分解及组装URI对象 use URI;use URI::Split qw(uri_spli

Sendip 命令行发包工具,支持IP、TCP、UDP等

Sendip是一个linux平台的命令行发数据包工具,目前(2018年2月)支持的协议有ipv4.ipv6.icmp.tcp.udp.bgp.rip.ntp,作者表示其他协议将会后面支持,当他有空写的时候.Sendip很强大,它支持自定义头部和数据(也就是IP层以上的整个包),没有过多的限制,所以连源IP都可以随意写,而且里面也提供了一些默认的选项,可以择需而发,非常方便.又因为它是命令行的,还支持从文件中直接读取整个packet发送,所以适合用脚本批量测试.它只是个发包工具,对于发出去的包,收

发包工具D-ITG

最近发现了一个非常好用的发包工具D-ITG,比iperf功能强大.安利一波. 这是它的使用指南,非常齐全.http://traffic.comics.unina.it/software/ITG/manual/ 工具首页是:http://traffic.comics.unina.it/software/ITG/ 原文地址:https://www.cnblogs.com/fenglt/p/8649714.html

Charles——charles 工具栏Tools总结——批量重复请求/重复发包工具/repeat——Advanced Repeat就是重复发包多次

charles 批量请求 重复发包工具/repeat Charles 让你选择一个请求并重复,在测试后端接口的时候非常有用: Charles将请求重新发送到服务器,并将响应显示为新请求. 如果您进行后端更改并希望测试它们,用了charles后,你就没必要在浏览器(或其他客户端)中重复该请求,charles可以非常方便的完成. 特别是如果重新创建请求需要传一些列参数的时候(比如在游戏中获得分数,比如填写一大串表单的请求时候),这将节省大量的精力. 请求的重复在Charles内部完成,因此您无法在浏

inux下网络发包工具 Tcpreplay3.x。

第1章.     说明 本文档只适用于Tcpreplay3.x. 第2章.     Tcpreplay系列工具 2.1. 概述 首先推荐一个网站:http://tcpreplay.synfin.net/,上面有Tcpreplay的安装包和很多文档,包括手册.man页和FAQ等.本文也是在参考这个网站的基础上,通过一些实验而得出的. Tcpreplay是一系列工具的总称,包括tcpreplay.tcprewrite和tcpprep等工具,这也是Tcpreplay的第一个字母大写的原因.它用来在Un

ZipArchive是一个开源的zip开发包工具。

使用方法如下: 创建/添加一个zip包 ZipArchive* zipFile = [[ZipArchive alloc] init]; //次数得zipfilename需要一个完整得路径,例如***/Documents/demo.zip [zipFile CreateZipFile2:@"zipfilename"]; //有两种可选得方式进行创建压缩包,带密码和不带密码的 [[zipFile CreateZipFile2:@"zipfilename" Passwo

【发包工具】http多线程发包工具

使用方法:输入地址,发送的内容,线程数,等待时间,每个线程发送的次数,GET/POST请求. 源代码 package com.xmxkkk.httptest; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.TitledBorder; public class MainWindow extends JFrame { // HttpClient httpclien