Junit测试类线程执行睡眠sleep()后次线程后面的程序不能进行

Junit测试类线程执行睡眠sleep()后次线程后面的程序不能进行Junit测试类线程执行睡眠sleep()后次线程后面的程序不能进行

大家好,又见面了,我是你们的朋友全栈君。

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

输出。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/106152.html原文链接:https://javaforall.net

(0)
上一篇 2022年4月23日 下午5:20
下一篇 2022年4月23日 下午5:20


相关推荐

  • Unity3D游戏引擎最详尽基础教程

    Unity3D游戏引擎最详尽基础教程转自:http://blog.sina.com.cn/s/blog_7c336a8301013son.html我一直向所有想做游戏的朋友推荐Unity3D,为什么呢?首先是因为专业,Unity3D非常强大,用它创建一个类似MiniGore这样的3D平面射击游戏简直轻而易举,而就连使命召唤这样的大型3d游戏,如果素材得当也不在话下。二是因为易用,他的操作非常容易,而使用的脚本语言又是JavaSc

    2022年4月30日
    94
  • python判断linux中文件是否存在_Python判断文件是否存在的三种方法

    python判断linux中文件是否存在_Python判断文件是否存在的三种方法通常在读写文件之前,需要判断文件或目录是否存在,不然某些处理方法可能会使程序出错。所以最好在做任何操作之前,先判断文件是否存在。这里将介绍三种判断文件或文件夹是否存在的方法,分别使用os模块、Try语句、pathlib模块。1.使用os模块os模块中的os.path.exists()方法用于检验文件是否存在。判断文件是否存在importosos.path.exists(test_file.txt…

    2022年6月29日
    120
  • java fel_FEL表达式的用法

    java fel_FEL表达式的用法Fel 是开放的 引擎执行中的多个模块都可以扩展或替换 Fel 的执行主要是通过函数实现 运算符 等都是 Fel 函数 所有这些函数都是可以替换的 扩展函数也非常简单 Fel 有双引擎 同时支持解释执行和编译执行 可以根据性能要求选择执行方式 编译执行就是将表达式编译成字节码 生成 java 代码和编译模块都是可以扩展和替换的 FEL 可以进行算数运算以及逻辑运算 也可以调用类的静态方法 非静态方法 只需

    2026年3月19日
    2
  • 【算法】回溯法——0-1背包问题

    【算法】回溯法——0-1背包问题回溯法 nbsp nbsp nbsp nbsp 回溯法是一种非常有效的方法 有 通用的解题法 之称 它有点像穷举法 但是更带有跳跃性和系统性 他可以系统性的搜索一个问题的所有的解和任一解 回溯法采用的是深度优先策略 nbsp nbsp nbsp nbsp 回溯法在确定了解空间后 从根结点出发 以深度优先的方式搜索整个解空间 此时根结点成为一个活结点 并且成为当前的扩展结点 从扩展结点向纵向搜索新的结点 当算法搜索到了解空间数的任一结点 先判断该结点是

    2026年3月26日
    2
  • [网络测试工具]iperf3极简使用教程windows(iperf3.1.3-windows-64bit 命令行版本(cmd)使用心得)

    [网络测试工具]iperf3极简使用教程windows(iperf3.1.3-windows-64bit 命令行版本(cmd)使用心得)目录一 软件下载二 软件使用 step1 首先检查一下下载下来的软件是否包含两个文件 step2 将这个文件夹放置到一个全英文路径里面 step3 打开 cmd win10 你打开 cortana 小娜 问她 cmd 就好 step4 最核心的一步改变 cmd 正在操作的目录 step5 开始使用键入命令 iperf3 exe 文档中说明的命令三 测试举例

    2026年3月18日
    2
  • Vim 插件 -- Pathogen

    Vim 插件 -- PathogenPathogenvim org nbsp nbsp github 这是个很有用的插件 他的作用就是可以把所有的插件放在分开的目录 从而使插件之间隔离开 这样更有利于插件的管理 他的工作原理就是启动前修改了 nbsp vim nbsp 的 runtimepath path tags 使得 nbsp vim nbsp 去加载分散在更目录的插件 最好的做法是该插件和 Git 的 submodule 功能相结合 这样当要更新所有插件时

    2026年3月18日
    1

发表回复

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

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