调用start的结果

package TestException;

public class test1 {

public static void main(String[] args) {
// 3:直接创建Thread的子类对象创建线程。
Test2 s= new Test2("张三");
Test2 s1 = new Test2("test");
//调用start(里面会自动去执行run方法中的代码块) 4:调用start方法开启线程并调用线程的任务run方法执行。
s.start();
s1.start();
}

}
//继承Thread 1:定义一个类 继承Thread类。
class Test2 extends Thread {
String name;
Test2(String name){
this.name=name;
}
public void show(){

for(int i=0;i<100;i++){
System.out.println(name+i);
}
}
//重新run方法 2:重写Thread类的run方法。
public void run(){
show();
}

}
结果:

test0
张三0
test1
张三1
test2
张三2
test3
张三3
test4
test5
张三4
test6
test7
test8
test9
张三5
test10
张三6
test11
张三7
张三8
test12
张三9
张三10
张三11
test13
test14
test15
test16
张三12
test17
test18
test19
张三13
test20
张三14
张三15
张三16
张三17
张三18
张三19
张三20
张三21
test21
张三22
张三23
张三24
张三25
test22
张三26
test23
张三27
test24
张三28
test25
张三29
test26
test27
张三30
test28
张三31
test29
张三32
张三33
test30
test31
test32
test33
test34
test35
test36
test37
test38
test39
test40
test41
test42
test43
test44
test45
test46
test47
test48
test49
test50
test51
test52
test53
test54
test55
test56
test57
test58
test59
test60
test61
张三34
test62
张三35
test63
张三36
test64
张三37
张三38
test65
张三39
test66
张三40
test67
张三41
test68
张三42
test69
张三43
test70
张三44
张三45
张三46
test71
张三47
test72
张三48
test73
张三49
test74
张三50
test75
张三51
test76
张三52
test77
张三53
test78
张三54
test79
张三55
test80
张三56
张三57
test81
张三58
test82
张三59
test83
张三60
test84
test85
test86
test87
test88
test89
test90
test91
test92
test93
张三61
张三62
test94
张三63
张三64
张三65
张三66
张三67
张三68
test95
test96
test97
test98
test99
张三69
张三70
张三71
张三72
张三73
张三74
张三75
张三76
张三77
张三78
张三79
张三80
张三81
张三82
张三83
张三84
张三85
张三86
张三87
张三88
张三89
张三90
张三91
张三92
张三93
张三94
张三95
张三96
张三97
张三98
张三99
-----------------------------------
调用run

package TestException;

public class test1 {

public static void main(String[] args) {
// 3:直接创建Thread的子类对象创建线程。
Test2 s= new Test2("张三");
Test2 s1 = new Test2("test");
//这里调用跟调用普通方法没有任何区别,先调用谁就先执行谁,下面的方法必须要等上面的方法执行完才会执行
s.run();
s1.run();
}

}
//继承Thread 1:定义一个类 继承Thread类。
class Test2 extends Thread {
String name;
Test2(String name){
this.name=name;
}
public void show(){

for(int i=0;i<100;i++){
System.out.println(name+i);
}
}
//重新run方法 2:重写Thread类的run方法。
public void run(){
show();
}

}

结果:

张三0
张三1
张三2
张三3
张三4
张三5
张三6
张三7
张三8
张三9
张三10
张三11
张三12
张三13
张三14
张三15
张三16
张三17
张三18
张三19
张三20
张三21
张三22
张三23
张三24
张三25
张三26
张三27
张三28
张三29
张三30
张三31
张三32
张三33
张三34
张三35
张三36
张三37
张三38
张三39
张三40
张三41
张三42
张三43
张三44
张三45
张三46
张三47
张三48
张三49
张三50
张三51
张三52
张三53
张三54
张三55
张三56
张三57
张三58
张三59
张三60
张三61
张三62
张三63
张三64
张三65
张三66
张三67
张三68
张三69
张三70
张三71
张三72
张三73
张三74
张三75
张三76
张三77
张三78
张三79
张三80
张三81
张三82
张三83
张三84
张三85
张三86
张三87
张三88
张三89
张三90
张三91
张三92
张三93
张三94
张三95
张三96
张三97
张三98
张三99
test0
test1
test2
test3
test4
test5
test6
test7
test8
test9
test10
test11
test12
test13
test14
test15
test16
test17
test18
test19
test20
test21
test22
test23
test24
test25
test26
test27
test28
test29
test30
test31
test32
test33
test34
test35
test36
test37
test38
test39
test40
test41
test42
test43
test44
test45
test46
test47
test48
test49
test50
test51
test52
test53
test54
test55
test56
test57
test58
test59
test60
test61
test62
test63
test64
test65
test66
test67
test68
test69
test70
test71
test72
test73
test74
test75
test76
test77
test78
test79
test80
test81
test82
test83
test84
test85
test86
test87
test88
test89
test90
test91
test92
test93
test94
test95
test96
test97
test98
test99

调用run与调用start的区别的更多相关文章

  1. 调用start()方法和直接调用run()方法的区别

    调用start()方法和直接调用run()方法的区别 新建一个线程,只需要使用new关键字创建一个线程对象,并且调用start()方法即可. Thread thread = new Thread(); ...

  2. 手动调用run方法和普通方法调用没有区别

    手动调用run方法和普通方法调用没有区别

  3. java多线程调用run和不调用run的区别

    当在java程序中创建一个线程的时候,会三种情况: 1,只运行run方法 2,先执行start,再执行run方法 3,只运行start方法 三者的区别如下: 运行方式 区别 只运行run 只运行run ...

  4. 牛客网Java刷题知识点之调用线程类的start()方法和run()方法的区别

    不多说,直接上干货! 前期博客 牛客网Java刷题知识点之四种不同的方式创建线程 这里很简单 首先,系统通过调用线程类的start()方法来启动一个线程,此时这个线程处于就绪状态,而非运行状态,也就意 ...

  5. oracle创建函数和调用存储过程和调用函数的例子(区别)

    创建函数: 格式:create or replace function func(参数 参数类型) Return number Is Begin --------业务逻辑--------- End; ...

  6. 转 - RPC调用和HTTP调用的区别

    很长时间以来都没有怎么好好搞清楚RPC(即Remote Procedure Call,远程过程调用)和HTTP调用的区别,不都是写一个服务然后在客户端调用么?这里请允许我迷之一笑~Naive!本文简单 ...

  7. RPC调用和HTTP调用的区别

    很长时间以来都没有怎么好好搞清楚RPC(即Remote Procedure Call,远程过程调用)和HTTP调用的区别,不都是写一个服务然后在客户端调用么?这里请允许我迷之一笑~Naive!本文简单 ...

  8. JNI调用C和C++存在的区别

    JNI调用C和C++存在的区别   JNI是由C语言定义接口的,JNI通过函数名找函数入口,执行函数里的内容.这和函数用什么语言生成的并没有关系.只要保证函数名称符合JNI的协议.而使用C++要注意的 ...

  9. 既然 start() 方法会调用 run() 方法,为什么我们调用 start() 方法,而不直接调用 run() 方法?

    当你调用 start() 方法时,它会新建一个线程然后执行 run() 方法中的代码.如果直接调用 run() 方法,并不会创建新线程,方法中的代码会在当前调用者的线程中执行

随机推荐

  1. Scriter CSS

    transition: height(quart-out,1.0s,quart-in); transform:rotate(50deg); http://www.terrainformatica.co ...

  2. 书写 sql 中关于 update 多表联合更新的方法

    SQL Update多表联合更新的方法(1) sqlite 多表更新方法//----------------------------------update t1 set col1=t2.col1fr ...

  3. python中的 set 中的元素

    set存储的元素和dict的key类似,必须是不变对象,因此,任何可变对象是不能放入set中的.

  4. Flask web开发之路一

    之前学过一段时间的flask,感觉还是挺好用的,自己的专利挖掘项目也想这个web框架来搭建,于是重新开始基础学习 环境:win10,python3.6,pycharm2017,虚拟环境virtuale ...

  5. ABP之事件总线(3)

    承接上一篇时间总线的学习,在上一篇中我们实现了取消显式注册事件的方式,采用使用反射的方式.这样的好处可以解除Publisher和Scriber的显式依赖,但是问题又来了,因为我们只有Publisher ...

  6. Python----八荣八耻

    以动手实践为荣 , 以只看不练为耻; 以打印日志为荣 , 以单步跟踪为耻; 以空格缩进为荣 , 以制表缩进为耻; 以单元测试为荣 , 以人工测试为耻; 以模块复用为荣 , 以复制粘贴为耻; 以多态应用 ...

  7. myeclipse编译弹框:The builder launch configuration could not be found

    myEclipse 每次编译时报 "The builder launch configuration could not be found" 的弹框:不影响项目编译启动,但是弹框挺 ...

  8. java虚拟机学习

    //20181129 ·Java虚拟机的内存分为三个部分:栈stack.堆heap.方法区method area----包含在“堆”里面,因为作用特殊所以单独列出来 ·栈的特点:     栈描述的是方 ...

  9. javascript中的数字玩法,颠覆你的眼睛

    1.JavaScript中的数字中有一些很奇葩的现象. 在Chrome控制台中可以自己做一下实验: 1 === 1.0 ; //true 习惯了强类型语言,如java,c,OC看到这个结论还是有点小迷 ...

  10. 原码,补码,反码的概念及Java中使用那种存储方式

    原码,补码,反码的概念及Java中使用那种存储方式: 原码:原码表示法是机器数的一种简单的表示法.其符号位用0表示正号,用:表示负号,数值一般用二进制形式表示 补码:机器数的补码可由原码得到.如果机器 ...