大家好,又见面了,我是你们的朋友全栈君。
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
输出。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/106152.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...