Junit测试类线程执行睡眠sleep()后次线程后面的程序不能进行_junit sleep_小爷欣欣的博客-程序员秘密

技术标签: java  

Junit测试类线程执行睡眠sleep()后次线程后面的程序不能进行;因为junit执行的程序必须是激活状态的。而sleep是睡眠状态,一旦执行就会自动退出程序。

如下:

package com.xiaoyexinxin.ThreadLearn;

import org.junit.Test;

public class MultiThread {

	private int num=0;
	public synchronized void printNum(String tar){
		try {
			if(tar.equals("a")){
				num=100;
				System.out.println("线程a");
				Thread.sleep(10);//休息1秒,之所以这样是为了让大家看到两个线程互不干扰,如果不休息的话,瞬间执行完了,看不出效果  
			}else{
				num=200;
				System.out.println("线程b");
//				Thread.sleep(10);//休息1秒,之所以这样是为了让大家看到两个线程互不干扰,如果不休息的话,瞬间执行完了,看不出效果  

			}
			System.out.println("输出的线程是:"+tar+",num:"+num);
		}catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	@Test
	public void MultiThreadTest(){
		final MultiThread mThread1=new MultiThread();
		final MultiThread mThread2=new MultiThread();//设为final表示此对象不能别继承,没有子类。如果是方法被定义成final,则此方法不能被重写
		Thread t1=new Thread(new Runnable() {
			
			public void run() {
				// TODO Auto-generated method stub
				mThread1.printNum("a");
			}
		});
		Thread t2=new Thread(new Runnable() {
			
			public void run() {
				// TODO Auto-generated method stub
				mThread2.printNum("b");
				
			}
		});
		t1.start();
		t2.start();
	}
}

输出结果:

线程a
线程b
输出的线程是:b,num:200
可见上面有两个线程,但是没有
输出的线程是:a,num:200
输出。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/csdnliuxin123524/article/details/80016391

智能推荐

如何将字符串反转?_将一个字符串进行反转。_小黑爱上排骨的博客-程序员秘密

1.StringBuilder的reverse()方法,最简单public static String reverse4(String s) { return new StringBuffer(s).reverse().toString();}2.使用字符串数组,实现从尾部开始逐个逆序放入字符串public static String reverse3(String s) { char[] array = s.toCharArray(); String reverse = "";

JAVA 方法区是在堆里面吗_方法区在堆里面吗_akaks0的博客-程序员秘密

三种情况:1、 java7之前,方法区位于永久代(PermGen),永久代和堆相互隔离,永久代的大小在启动JVM时可以设置一个固定值,不可变;2、 java7中,static变量从永久代移到堆中;3、 java8中,取消永久代,方法存放于元空间(Metaspace),元空间仍然与堆不相连,但与堆共享物理内存,逻辑上可认为在堆中...

HBase 过滤器 (二)_第1关:常用的专用过滤器_devalone的博客-程序员秘密

继  HBase 过滤器 (一)1.3 专用过滤器 (Dedicated Filters)----HBase 提供的第二类过滤器直接基于 FilterBase 并实现了更特定的应用场景。其中的很多过滤器事实上只适用于执行扫描操作时,因为它们过滤整个行。对于 get() 调用,这些过滤器的限制过于苛刻:包括所有行,后者什么也不包括。    ■ 前缀过滤器 (PrefixFilter)...

echarts图表宽度设置100%,结果echarts宽度只有100px,解决图表自适应宽度问题_echarts 宽度_时间在飞飞的博客-程序员秘密

问题我的echarts在tab选项卡中显示,为了自适应,用来渲染图表的div的宽度为100%,但是charts渲染出来以后默认设置为了100px。原因图表的父容器 li 是隐藏的,我默认设置 display:none,图表在执行js初始化的时候找不到这个元素,所以自动将“100%”转成了“100”,最后计算出来的图表就成了100px解决方法有两种(一种是切换tab以后,li显示以后再初始化图表,二是给li中渲染图表的div提前设置好width 宽度)第一种可以把图表的实例...

mac安装老版本xcode_max xcode如何安装其他版本_有石为玉的博客-程序员秘密

1.首先打开连接https://developer.apple.com/download/more/进入页面2.在搜索框中输入 xcode 回车搜索,如下图所示。下载需要版本即可。

监控服务器磁盘阵列哪个稳定,监控选择存储服务器和磁盘阵列_猫咪逗你玩儿的博客-程序员秘密

监控选择存储服务器和磁盘阵列 内容精选换一换当服务器中的磁盘发生故障、或者由于人为误操作导致服务器数据丢失时,可以使用已经创建成功的备份恢复原服务器。如果希望将数据恢复至其他服务器上,请参考如何将原服务器数据恢复至新创建的服务器?备份的数据盘的数据,不能恢复到系统盘中。不支持恢复到状态处于“故障”的服务器。不支持使用复制操作产生的备份用于恢复。需要恢复的服务器中的磁盘运行状态正常。配置目的端或启动...

随便推点

分布式架构常见面试问题_分布式框架 面试题_雨田说码的博客-程序员秘密

Spring Cloud AlibabaNacos服务注册及健康状态如何检测?项目中如何实现服务的调用?Nacos的配置管理模型以及配置数据的获取?为什么要限流,Sentinel 限流常用算法?网关层面如何实现负载均衡以及常用算法?Docker写出几个Docker操作镜像的指令?如何理解Docker中的数据卷?Redis基于Redis如何实现一个活动的投票系统?如何理解缓存穿透和雪崩?Redis的高可用如何保证?...

硬件工程师入门和进阶_硬件工程师入门小册子 记得诚下载_记得诚的博客-程序员秘密

很多新人焦虑的点在于:硬件的知识点太多了,各种电阻元器件,特性、选型我都还不懂,绘图软件还没学会,PCB也不会画,什么时候才能做项目。焦虑是因为学习方法不对,我们不可能把所有的知识点都学好,都准备好,然后才去做项目,这也是不可能的,罗马也不是一天建成的。用自上而下的方法对项目进行分解,从硬件架构,到各功能模块,再到各功能模块下的电子元器件,再熟悉电子元器件,学会选型。第二点就是打地基,到建筑堡垒的过程,知识体系越完善,基础越牢,堡垒越稳定,出错概率越小。,更深的知识点,可以留到项目不急或者业余时间去学习。.

MyBatisPlus笔记_BigDevil_的博客-程序员秘密

文章目录学习(引)MyBatis-Plus使用1(引)MyBatis-Plus使用2参考入门demo==注意==pom 依赖application.yml 配置文件pojodaoservicecontrollerconfig(mybatisPlus分页插件)启动类学习(引)MyBatis-Plus使用1(引)MyBatis-Plus使用2参考【Springboot整合MybatisPlus(超详细)完整教程~】https://www.cnblogs.com/liuyj-top/p/12976

boost::hana::drop_front_exactly用法的测试程序_给我打包一份三十块钱的外卖的博客-程序员秘密

boost::hana::drop_front_exactly用法的测试程序实现功能C++实现代码实现功能boost::hana::drop_front_exactly用法的测试程序C++实现代码#include <boost/hana/assert.hpp>#include <boost/hana/drop_front_exactly.hpp>#include <boost/hana/equal.hpp>#include <boost/hana/ex

ArrayList和LinkedList区别及使用场景_sherry_Rui的博客-程序员秘密

1、ArrayList是基于数组实现的,其构造函数为:private transient Object[] elementData;private int size;ArryList初始化时,elementData数组大小默认为10;每次add()时,先调用ensureCapacity()保证数组不会溢出,如果此时已满,会扩展为数组length的1.5倍+1,然后用array.cop

推荐文章

热门文章

相关标签