精华内容
下载资源
问答
  • 定时器和定时任务 多线程提供了可以在程序进行设置定时操作。 一.Timer定时器 设置任务的执行时间 构造方法 Timer() 创建一个新计时器。 Timer(boolean isDaemon) 创建一个新计时器,可以指定其相关的线程作为...

    一.线程组(group)

    将多个线程进行分组,将线程进行分组,可以进行统一操作批处理操作。
    创建线程组:ThreadGroup

    1.构造方法

    方法含义
    ThreadGroup(String name)构造一个新线程组。
    ThreadGroup(ThreadGroup parent, String name)创建一个新线程组。

    2.常用方法

    返回值方法含义
    intactiveCount()返回此线程组中活动线程的估计数。
    intactiveGroupCount()返回此线程组中活动线程组的估计数。
    voidcheckAccess()确定当前运行的线程是否有权修改此线程组。
    voiddestroy()销毁此线程组及其所有子组。
    intenumerate(Thread[] list)把此线程组及其子组中的所有活动线程复制到指定数组中。
    intenumerate(Thread[] list, boolean recurse)把此线程组中的所有活动线程复制到指定数组中。
    intenumerate(ThreadGroup[] list)把对此线程组中的所有活动子组的引用复制到指定数组中。
    intenumerate(ThreadGroup[] list, boolean recurse)把对此线程组中的所有活动子组的引用复制到指定数组中。
    intgetMaxPriority()返回此线程组的最高优先级。
    StringgetName()返回此线程组的名称。
    ThreadGroupgetParent()返回此线程组的父线程组。
    voidinterrupt()中断此线程组中的所有线程。
    booleanisDaemon()测试此线程组是否为一个后台程序线程组。
    booleanisDestroyed()测试此线程组是否已经被销毁。
    voidlist()将有关此线程组的信息输出到标准输出。
    booleanparentOf(ThreadGroup g)测试此线程组是否为线程组参数或其祖先线程组之一。
    voidsetDaemon(boolean daemon)更改此线程组的后台程序状态。
    voidsetMaxPriority(int pri)设置线程组的最高优先级。
    StringtoString()返回此线程组的字符串表示形式。
    voiduncaughtException(Thread t, Throwable e)当此线程组中的线程因为一个未捕获的异常而停止,并且线程没有安装特定 Thread.UncaughtExceptionHandler 时,由 Java Virtual Machine 调用此方法。
    public class ThreadGroupDemo {
    	public static void main(String[] args) {
    		//创建线程组
    		ThreadGroup threadGroup = new ThreadGroup("第一组");
    		//只能设置改组为后台守护线程,不能将组中的线程进行修改
    		threadGroup.setDaemon(true);
    		//创建线程
    		thead01 thead = new thead01();
    		Thread t01=new Thread(threadGroup,thead,"t01");
    		Thread t02=new Thread(threadGroup,thead,"t02");
    		Thread t03=new Thread(threadGroup,thead,"t03");
    		Thread t04=new Thread(threadGroup,thead,"t04");
    		//判断是不是后台线程组
    		System.out.println(threadGroup.isDaemon());
    		//操作
    		t01.setDaemon(true);
    		
    		System.out.println(t01.isDaemon());
    		System.out.println(t02.isDaemon());
    		
    		t01.start();
    		//销毁线程组的线程对象
    		//t01.destroy();
    		//销毁组中所有线程对象
    		//threadGroup.destroy();
    	}
    	}
    		
    
    
    
    
    class thead01 implements Runnable{
    
    	@Override
    	public void run() {
    
    		//线程名字
    		System.out.println("线程名字"+Thread.currentThread().getName());
    		//线程所在组名字
    		System.out.println("线程所在组名字"+Thread.currentThread().getThreadGroup().getName());
    		
    	}
    	
    }
    

    二.定时器和定时任务

    • 多线程提供了可以在程序进行设置定时操作。

    一.Timer定时器

    • 设置任务的执行时间

    构造方法

    1. Timer() 创建一个新计时器。
    2. Timer(boolean isDaemon) 创建一个新计时器,可以指定其相关的线程作为守护程序运行。
    3. Timer(String name) 创建一个新计时器,其相关的线程具有指定的名称。
    4. Timer(String name, boolean isDaemon) 创建一个新计时器,其相关的线程具有指定的名称,并且可以指定作为守护程序运行。

    常用方法

    1. void
      cancel() 终止此计时器,丢弃所有当前已安排的任务。
    2. int
      purge() 从此计时器的任务队列中移除所有已取消的任务。
    3. void
      schedule(TimerTask task, Date time) 安排在指定的时间执行指定的任务。
    4. void
      schedule(TimerTask task, Date firstTime, long period) 安排指定的任务在指定的时间开始进行重复的固定延迟执行。
    5. void
      schedule(TimerTask task, long delay) 安排在指定延迟后执行指定的任务。
    6. void
      schedule(TimerTask task, long delay, long period) 安排指定的任务从指定的延迟后开始进行重复的固定延迟执行。
    7. void
      scheduleAtFixedRate(TimerTask task, Date firstTime, long period) 安排指定的任务在指定的时间开始进行重复的固定速率执行。
    8. void
      scheduleAtFixedRate(TimerTask task, long delay, long period) 安排指定的任务在指定的延迟后开始进行重复的固定速率执行。

    参数代表的值

    • task - 所要安排的任务。
    • delay - 执行任务前的延迟时间,单位是毫秒。
    • time - 执行任务的时间。
    • period - 执行各后续任务之间的时间间隔,单位是毫秒。
    • firstTime - 首次执行任务的时间。

    二.TimerTask 定时任务

    • TimerTask:具体执行的操作,这里就是一个线程对象 。

    构造方法

    protected TimerTask() 创建一个新的计时器任务。

    常用方法

    1. boolean
      cancel() 取消此计时器任务。
    2. abstract void
      run() 此计时器任务要执行的操作。
    3. long
      scheduledExecutionTime() 返回此任务最近实际 执行的安排 执行时间。

    定时器步骤:

    1、创建定时任务,继承TimerTask,并重写run方法。
    2、创建定时器,设置任务执行时间。

    例子

    小例子1

    • 打开网易云音乐,设置时间在当前时间之后的三分十五秒打印输出,定时任务执行

    WorkTask .java

    public class WorkTask extends TimerTask{
    
    	@Override
    	public void run() {
    		// TODO Auto-generated method stub
    			try {
    				System.out.println("开始启动网易云音乐");
    				
    				Runtime.getRuntime().exec("C:\\Program Files (x86)\\Netease\\CloudMusic\\cloudmusic.exe");
    			} catch (IOException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    		}
    		
    	}
    
    

    TimerWork.java

    public class TimerWork{
    	public static void main(String[] args) {
    		//创建定时器
    		Timer timer=new Timer();
    		Date date=new Date();
    		Date date01=new Date(date.getTime()+(3*60+15)*1000);
    		//Date date01=new Date(date.getTime()+100);
    		 timer.schedule(new WorkTask(), date01);
    		 System.out.println("定时器已经做好了");
    	}
    	
    }
    
    

    小例子2

    • 在键盘输入,注册,注册成功之后2秒钟之后, 将注册好的信息保存到文件中 。

    ZhuCe.java

    public class ZhuCe extends TimerTask{
    	
    	static String admin=null;
    	static String pass=null;
    	
    	//@SuppressWarnings("resource")
    	
    	public void zhuze() {
    		Scanner sc=new Scanner(System.in);
    		System.out.println("请输入要注册的用户名:");
    		admin=sc.next();
    		System.out.println("请输入要注册的密码:");
    		pass = sc.next();
    	
    	}
    	
    	@Override
    	public void run() {
    		// TODO Auto-generated method stub
    		Properties pt=new Properties();
    		pt.setProperty(admin, pass);
    		//将数据保存到文件中
    		try {
    			FileOutputStream fileOutputStream = new FileOutputStream(new File("user.properties"));
    			pt.store(fileOutputStream, "成功注册的信息");
    			System.out.println("数据持久化成功");
    		} catch (FileNotFoundException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    	
    }
    
    

    APP.java

    public class APP {
    	public static void main(String[] args) {
    		ZhuCe dl=new ZhuCe();
    		Scanner sc=new Scanner(System.in);
    		boolean flag=true;
    		while(flag) {
    	
    				boolean bool=true;
    				while(bool) {
    					dl.zhuze();
    					//创建定时器
    					Timer timer=new Timer();
    					timer.schedule(new ZhuCe(), new Date(System.currentTimeMillis()+2000));
    					System.out.println("是否继续进行注册  1是      2否");
    					int choose=sc.nextInt();
    					if(choose==1) {
    						
    					}else {
    						bool=false;
    					}
    				}
    				
    			}
    			System.out.println("是否继续进行操作1是        2否");
    			int choose3=sc.nextInt();
    			if(choose3==1) {
    				
    			}else {
    				System.out.println("退出成功");
    				flag=false;
    			}
    		}
    	}
    
    
    
    展开全文
  • 如需要每个线程在请求前按随机时间停顿,那么使用这个定时器图表示暂停时间会分布在100到400之间 (3)泊松随机定时器(Poisson Random Timer) 这个定时器在每个线程请求之前按随机的时间停顿,大部分的时间...

    参考: https://blog.csdn.net/qq_29707567/article/details/86293012     固定定时器\beanshell定时器

         https://blog.csdn.net/hujyhfwfh2/article/details/80557706  Synchronizing Timer(设置集合点)

    一、Jmeter定时器的概念:

    1)定时器是在每个sampler(采样器)之前执行的,而不是之后;
    是的,你没有看错,不管这个定时器的位置放在sampler之后,还是之下,它都在sampler之前得到执行。
    2)定时器是有作用域的;当执行一个sampler之前时,所有当前作用域内的定时器都会被执行;
    3)如果希望定时器仅应用于其中一个sampler,则把该定时器作为子节点加入;
    4)如果希望在sampler执行完之后再等待,则可使用Test Action;

    二、Jmeter中定时器的应用

    1.正常的性能测试,在每个请求中获取到重要的性能指标值以后,在每个请求中需要设置等待时间,这样比较接近服务器真实环境的请求。
    2.这两种设置等待时间的方式比较常用:
    (1)Gaussian Random Timer 服从高斯分布,等待时间比较符合
    (2)Poisson Random Timer 服务帕松分布

     3.首先User Defined Variables定义所需要的参数,如下:

    使用方法:在对应的需要使用参数的位置,使用${ip}, ${port}替代。
    应用场景:当测试环境变化时,我们只需要修改一处的ip,port就可以让脚本马上应用于另外一个环境的测试,而不需要逐个脚本进行修改。

    上面设置的参数,在如下接口中的应用如下:

    4.配置各个接口的等待时间参数,设置全部请求的等待时间,配置等待时间常用方式有以下几种:

    (1)固定定时器(Constant Timer)

    当放置Constant Timer于两个http请求之间,那么它代表的含义是:在上一个请求发出至完成后,开始Contant Timer指定的时间,最后再发出第二个请求.它并不是代表两个请求之间的发送间隔时间.这是最重要的定时器。
        注意:固定定时器的延时不会计入单个java sampler的响应时间,但会计入事务控制器的时间。

    (2)高斯随机定时器(Gaussian Random Timer)

    定时器的延时时间是在指定范围内的正态分布。如需要每个线程在请求前按随机时间停顿,那么使用这个定时器,下图表示暂停时间会分布在100到400之间

    (3)泊松随机定时器(Poisson Random Timer)

    这个定时器在每个线程请求之前按随机的时间停顿,大部分的时间间隔出现在一个特定的值,总的延迟就是泊松分布值和偏移值之和。
    下面表示暂停时间会分布在100到400毫秒之间:
    1)Lambda(in milliseconds):兰布达值
    2)Constant Delay Offset(in milliseconds):暂停的毫秒数减去随机延迟的毫秒数

    展开全文
  • 此时需要用到定时器:1、使用固定定时器:在需要定时执行的http请求增加一个固定定时器节点:编辑固定定时器:一分钟下单60笔,每1000毫秒单一笔:设置固定定时器,线程延迟1000毫秒;设置线程组1个线程循环10次...
    场景:
    要模拟营业高峰期时服务员下单;例如模拟一分钟下单60笔;
    此时需要用到定时器:

    1、使用固定定时器:
    在需要定时执行的http请求下增加一个固定定时器节点:
    1080767-20170331162617524-1952433425.png

    编辑固定定时器:
    一分钟下单60笔,每1000毫秒下单一笔:
    设置固定定时器,线程延迟1000毫秒;
    1080767-20170331162619227-1891920556.png
    设置线程组1个线程循环10次;
    1080767-20170331162620414-15347442.png
    执行,查看结果数下单接口是否每一秒执行一次;








    转载于:https://www.cnblogs.com/Bella-fu/p/6652027.html

    展开全文
  • Jmeter之固定定时器的使用

    千次阅读 2020-07-22 18:24:22
    Jmeter之固定定时器的使用Jmeter的线程组在发送2个请求之间需要设置一个等待时间时,可以用固定定时器解决。场景举例特殊说明 Jmeter的线程组在发送2个请求之间需要设置一个等待时间时,可以用固定定时器解决。 场景...

    Jmeter的线程组在发送2个请求之间需要设置一个等待时间时,可以用固定定时器解决。

    场景举例

    顺序发送2个http请求,在第一个http请求发送完成之后,需要加一个等待时间,再发送第二个http请求。

    1. 配置方式,如图所示,在第2个请求中添加-》定时器-》固定定时器
      在这里插入图片描述
    2. 配置定时器等待时间
      在这里插入图片描述
    3. 需要控制2个http请求顺序执行还需在线程组中添加-》逻辑控制器-》临界区控制器(Critical Section Controller)
    4. 执行效果如下
      在这里插入图片描述
      可以看到http请求1发送后,等待了3分钟再发送http2。

    特殊说明

    固定定时器需要添加在发送前需要执行等待时间得http请求中,才能达到等待固定时间再发送指定http请求的目的。
    如果固定定时器直接配置在线程组下面,无论放在哪个位置,执行效果都是先执行固定定时器,在执行http请求,如下图所示的配置,执行效果是每个http请求发送前都会等待固定时间。
    在这里插入图片描述

    展开全文
  • Jmeter组件-线程组-几种常见的定时器

    千次阅读 2018-06-03 16:51:14
    1:线程组-几种常见的定时器1.1: BeanShell Timer1.1.1:设置线程组图 添加3个线程组 -->添加BeanShell Timer 设置延时3000ms1.1.2:观察结果树http请求1:第三秒请求数据 ;http请求1:第六秒请求数据 ...
  • 一、callable创建线程 步骤:实现callable接口,重写call方法。 该线程不能够直接自己启动,需要使用线程池来启动。启动之后会调用call方法进行具体的操作。 run方法和call方法的区别: run属于runnable线程的,...
  • Jmeter的线程组在发送2个请求之间需要设置一个等待时间时,类似于代码里面的sleep休眠时间,可以用固定定时器解决。 固定定时器 有2个HTTP请求,a是注册用户请求,b是登录的请求。先发a请求注册,注册成功后,用同一...
  • <!-- TOC --> <li><a href="#1-%E5%AE%9A%E6%97%B6%E5%99%A8">1. 定时器</a><ul> <li><a href="#11-time
  • 1、 配置线程组数据 设置线程数为10个 Ramp-up时间设置为50秒 循环次数设置为10次 2、设置固定定时器 固定定时器设置为10秒钟 3、查看运行结果(第一条样本可以忽略,用于获取token的) 首先我们先看Ramp-up...
  • 这一块的内容主要是有关死锁、线程间通信、线程组、线程池以及定时器的内容。 这一部分的内容,如果想搞得比较明白,最好先看一下上一篇大数据进阶25的内容。地址如下: 大数据进阶25-多线程 Lock 在上一篇大数据 ...
  • 1.JDK5之后的Lock锁: Lock lock = .....;//子类对象 lock.lock();//获取锁 try{ //同步的代码 }finally{ lock.unlock();//解锁 ...2.线程组: ...将线程添加到某个线程组: MyThread t = new MyThre
  • JMeter定时器

    2019-09-26 08:37:18
    1.线程组-常见定时器 1.1BeanShell Time 1.1.1:设置线程组 测试计划----->添加----->Threads(Users)----->线程组线程组内添加三个http请求:线程组----->Sampler------>http请求 添加BeanShell ...
  • .Constant Throughput Timer 固定吞吐量定时器 这个定时器引入了变量暂停,通过计算使总吞吐量(以每分钟去杨树计)尽可能接近给定的数字。当然,如果服务器不能处理它,或者如果其他定时器或耗时的测试原件阻止它...
  • 定时器 用定时器来设置延迟与同步 1.同一线程组下,定时器的执行优先于Sampler,如果有多个定时器...1.线程组下3个请求,并设置一个固定定时器为10s 2.执行后结果显示为:每间隔10s发送请求 固定定时器...
  • Jmeter定时器

    2021-01-31 23:03:55
    三是线程并发同步定时器;四是自定义定时器。Jmeter中的定时器必须和sampler(采样器)组件结合使用,当定时器作用域内没有sampler组件时,定时器不会被执行;定时器是在每个sampler之前执行的,当执行一个sampler...
  • JMETER 定时器 之 常数吞吐量定时器

    千次阅读 2017-11-22 16:52:00
    建议为线程组添加某种定时器,以便设定请求之间应该隔多长时间。如果测试人员不设定这种延迟,Jmeter可能会在短时间内产生大量访问请求,导致服务器被大量请求所淹没。定时器会让作用域内的每一个采样器都在执行前...
  • 线程组按顺序来执行,大概思路, 1.需要控制线程组内的操作在满足某一条件才执行...(PS:在测试计划中有个选项“独立运行每个线程组”的选项勾选上,并加上固定定时器。在线程组中设置延迟启动秒数也可达到效果,...
  • jmeter定时器

    2017-05-26 16:21:18
    1、固定定时器(Constant Timer) 这是一个很重要的定时器,如果你需要让每个线程在请求之前按相同的指定时间停顿,那么可以使用这个定时器;需要注意的是,固定定时器的延时不会计入单个sampler的响应时间,但会...
  • Linux 下定时器的实现方式分析

    千次阅读 2014-12-14 14:54:02
    不管是用户空间的程序开发,还是内核空间的程序开发,很多时候都需要有定时器作为基础组件的支持,但使用场景的不同,对定时器的实现考虑也不尽相同,本文讨论了在 Linux 环境,应用层和内核层的定时器的各种实现...
  • Jmeter 定时器

    2019-06-11 16:34:00
    固定定时器 线程中的每个请求等待固定的时间每个请求发送等待固定的时间 ##统一随机定时器 让线程中的每个请求等待一个随机时间,力求随机时间更均匀,每个时间间隔具有相同的发生概率 参数描述 ...
  • 导读 准备本节所用到的测试计划 线程组详解 本章总结 1、准备测试计划 (1)新建测试计划 (2)新建线程组 (3)添加两个请求(前面录制的360...测试计划,右键,添加,Threads(user),线程组,如图所示: ...
  • 定时器

    2011-01-12 22:30:55
    1、在应用开发中,经常需要一些周期性的操作,比如每5分钟执行某一操作等。对于这样的操作最方便、高效的实现方式就是使用java.util.Timer工具类。 private java.util.Timer timer;...triggers属性接受一触发器。
  • 建议为线程组添加某种定时器,以便设定请求之间应该隔多长时间。如果测试人员不设定这种延迟,Jmeter可能会在短时间内产生大量访问请求,导致服务器被大量请求所淹没。 定时器会让作用域内的每一个采样器都在执行前...
  • 目录 测试计划Test Plan ...独立运行每个线程组:默认为多线程组并行运行,勾选则依顺序运行;(setUP和tearDown线程组依旧比普通线程组优先或最后执行) 库文件:可导入jar包,如数据库驱动jar包 线...
  • Jmeter之定时器

    2020-04-03 20:07:15
    一、 定时器的作用域 定时器是在每个sampler(采样器)之前执行的,而不是之后; 当执行一个sampler之前时,所有当前作用域内的定时器都会被执行;...注意事项:固定定时器的时间不会计入单个sam...
  • 在某些场景,我们需要在特定的时间后做某些动作,但是又不想一直等待而浪费CPU,这个时候定时器是非常合适的机制。定时器用于在将来的某个时间点执行某个函数以完成特定的任务。 内核定时器告诉内核在指定的时间点...
  • 介绍 自JDK1.5开始,JDK提供了的...定时器是单线程模式; 如果在执行任务期间某个TimerTask的耗时较久,那么就会影响其它任务的调度; 计时器的任务调度是基于绝对时间的,对系统时间敏感; 计时器不会捕获执...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,588
精华内容 4,235
关键字:

线程组下固定定时器