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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Laravel5.2中Eloquent与DB类的区别是什么?

    Laravel5.2中Eloquent与DB类的区别是什么?

    2021年11月9日
    42
  • 实验四:定时器实验[通俗易懂]

    实验四:定时器实验[通俗易懂]一、实验目的1、掌握单片机定时/计数器的使用方法。2、掌握定时/计数器编程方法。二、实验设备及软件1、PC机2、KEIL513、PROTEAUS三、实验任务1、循环点亮流水等D1-D2-D3…D8, 延时采用定时器T0定时100ms2、循环点亮流水等D1-D2-D3…D8, 延时采用定时器T1定时1s四、仿真电路

    2022年7月26日
    4
  • 一眼看懂map和flatmap的区别

    一眼看懂map和flatmap的区别map的作用很容易理解就是对rdd之中的元素进行逐一进行函数操作映射为另外一个rdd。flatMap的操作是将函数应用于rdd之中的每一个元素,将返回的迭代器的所有内容构成新的rdd。通常用来切分单词。Spark中map函数会对每一条输入进行指定的操作,然后为每一条输入返回一个对象;而flatMap函数则是两个操作的集合——正是“先映射后扁平化”:操作1:同map函数一样:对每一条输入进…

    2022年5月4日
    63
  • mysql有casewhen函数吗_case when mysql

    mysql有casewhen函数吗_case when mysql本文主要向大家介绍了MySQL数据库之Mysqlcasewhen的三种用法,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助。<casewhen的三种用法:1.case字段when,字段的具体值。selecta.*,casenamewhen’流浪’then’法师’else’战士’endas’类型’FROMc_20170920a2.cas…

    2025年9月22日
    5
  • Html Mailto标签详细使用方法

    Html Mailto标签详细使用方法

    2021年9月25日
    47
  • 快速理解线程锁

    快速理解线程锁线程锁线程锁真的好麻烦啊!!!找了几篇博客发现写的都不一样相关联内容太多不容易理解所以现在需要理清什么是线程锁应用场景怎么用优缺点1.什么是线程锁机制多线程可以同时运行多个任务但是当多个线程同时访问共享数据时,可能导致数据不同步,甚至错误!so,不使用线程锁,可能导致错误啰嗦两句:比如你在银行取钱的同时你女朋友用支付宝取钱…

    2022年6月21日
    25

发表回复

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

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