Thread start(Thread子类.start(); 这样属于开启新的线程,不属于方法调用)

  Thread.currentThread().getName(); 获取当前正在运行的线程执行路径名称

  Thread.currentThread().getName(); 调用的是>>>>>>> java.lang包中的Thread源代码的以下代码:

  Demo extends Thread { getName(); } 调用的是>>>>>>> java.lang包中的Thread源代码的以下代码:

  

package android.java.thread3.thread2;

class Demo extends Thread { // 继承Thread 并重写 run() 方法,属于定义一个线程子类

    private String name;

    public Demo(String name) {
this.name = name;
} /**
* run方法里面执行的是start线程里面执行任务
*/
@Override
public void run() {
super.run();
showMethod();
} public void showMethod() {
for (int i = 0; i < 10; i++) {
System.out.println("Demo showMethod >>>>>>>" + name + " " + i + " 当前执行这行代码的线程:" + getName());
}
}
} public class Test { public static void main(String[] args) { Demo demo1 = new Demo("乔峰"); Demo demo2 = new Demo("段誉"); // 任务1 >>>启动一个新线程去执行任务
demo1.start(); // 任务2 >>>启动一个新线程去执行任务
demo2.start(); // 任务3 >>>main线程在执行
for (int i = 0; i < 10; i++) {
System.out.println("Test main " + i + " 当前执行这行代码的线程:" + Thread.currentThread().getName());
}
} }

执行的日志:

Demo showMethod >>>>>>>段誉 0 当前执行这行代码的线程:Thread-1
Demo showMethod >>>>>>>段誉 1 当前执行这行代码的线程:Thread-1
Demo showMethod >>>>>>>乔峰 0 当前执行这行代码的线程:Thread-0
Demo showMethod >>>>>>>段誉 2 当前执行这行代码的线程:Thread-1
Demo showMethod >>>>>>>乔峰 1 当前执行这行代码的线程:Thread-0
Demo showMethod >>>>>>>段誉 3 当前执行这行代码的线程:Thread-1
Demo showMethod >>>>>>>乔峰 2 当前执行这行代码的线程:Thread-0
Demo showMethod >>>>>>>乔峰 3 当前执行这行代码的线程:Thread-0
Demo showMethod >>>>>>>乔峰 4 当前执行这行代码的线程:Thread-0
Demo showMethod >>>>>>>乔峰 5 当前执行这行代码的线程:Thread-0
Demo showMethod >>>>>>>乔峰 6 当前执行这行代码的线程:Thread-0
Demo showMethod >>>>>>>乔峰 7 当前执行这行代码的线程:Thread-0
Demo showMethod >>>>>>>乔峰 8 当前执行这行代码的线程:Thread-0
Demo showMethod >>>>>>>段誉 4 当前执行这行代码的线程:Thread-1
Demo showMethod >>>>>>>乔峰 9 当前执行这行代码的线程:Thread-0
Test main 0 当前执行这行代码的线程:main
Test main 1 当前执行这行代码的线程:main
Demo showMethod >>>>>>>段誉 5 当前执行这行代码的线程:Thread-1
Demo showMethod >>>>>>>段誉 6 当前执行这行代码的线程:Thread-1
Demo showMethod >>>>>>>段誉 7 当前执行这行代码的线程:Thread-1
Demo showMethod >>>>>>>段誉 8 当前执行这行代码的线程:Thread-1
Demo showMethod >>>>>>>段誉 9 当前执行这行代码的线程:Thread-1
Test main 2 当前执行这行代码的线程:main
Test main 3 当前执行这行代码的线程:main
Test main 4 当前执行这行代码的线程:main
Test main 5 当前执行这行代码的线程:main
Test main 6 当前执行这行代码的线程:main
Test main 7 当前执行这行代码的线程:main
Test main 8 当前执行这行代码的线程:main
Test main 9 当前执行这行代码的线程:main

以上代码:可以看到有三条线程在运行,Thread-1  Thread-0  main


Thread run(Thread子类.run(); 这样属于方法调用,没有开启线程)

  Thread.currentThread().getName(); 获取当前正在运行的线程执行路径名称

  Thread.currentThread().getName(); 调用的是>>>>>>> java.lang包中的Thread源代码的以下代码:

  Demo extends Thread { getName(); } 调用的是>>>>>>> java.lang包中的Thread源代码的以下代码:

  

package android.java.thread3.thread2;

class Demo extends Thread { // 继承Thread 并重写 run() 方法,属于定义一个线程子类

    private String name;

    public Demo(String name) {
this.name = name;
} /**
* run方法里面执行的是start线程里面执行任务
*/
@Override
public void run() {
super.run();
showMethod();
} public void showMethod() {
for (int i = 0; i < 10; i++) {
System.out.println("Demo showMethod >>>>>>>" + name + " " + i + " getName():" + getName() + " ------- Thread.currentThread().getName():" + Thread.currentThread().getName());
}
}
} public class Test { public static void main(String[] args) { Demo demo1 = new Demo("乔峰"); Demo demo2 = new Demo("段誉"); // 任务1 >>>main线程在执行
demo1.run(); // 注意⚠️ 这个是方法调用,还是在main线程中运行,并没有开启启动线程,只有调用 .start();才会开启启动线程 // 任务2 >>>main线程在执行
demo2.run(); // 注意⚠️ 这个是方法调用,还是在main线程中运行,并没有开启启动线程,只有调用 .start();才会开启启动线程 // 任务3 >>>main线程在执行
for (int i = 0; i < 10; i++) {
System.out.println("Test main " + i + " 当前执行这行代码的线程:" + Thread.currentThread().getName());
}
} }

打印的日志:

以下打印的日志中:Demo showMethod  ---->    getName():Thread-0    和     Thread.currentThread().getName():main 为什么不一样呢?

答:getName():Thread-0得到的是  Demo extends Thread 后得到的类名叫Thread-0/Thread-1;

  Thread.currentThread().getName():main: Demo是被main线程执行的,所以Demo的执行路径是main

  

Demo showMethod >>>>>>>乔峰 0 getName():Thread-0 ------- Thread.currentThread().getName():main
Demo showMethod >>>>>>>乔峰 1 getName():Thread-0 ------- Thread.currentThread().getName():main
Demo showMethod >>>>>>>乔峰 2 getName():Thread-0 ------- Thread.currentThread().getName():main
Demo showMethod >>>>>>>乔峰 3 getName():Thread-0 ------- Thread.currentThread().getName():main
Demo showMethod >>>>>>>乔峰 4 getName():Thread-0 ------- Thread.currentThread().getName():main
Demo showMethod >>>>>>>乔峰 5 getName():Thread-0 ------- Thread.currentThread().getName():main
Demo showMethod >>>>>>>乔峰 6 getName():Thread-0 ------- Thread.currentThread().getName():main
Demo showMethod >>>>>>>乔峰 7 getName():Thread-0 ------- Thread.currentThread().getName():main
Demo showMethod >>>>>>>乔峰 8 getName():Thread-0 ------- Thread.currentThread().getName():main
Demo showMethod >>>>>>>乔峰 9 getName():Thread-0 ------- Thread.currentThread().getName():main
Demo showMethod >>>>>>>段誉 0 getName():Thread-1 ------- Thread.currentThread().getName():main
Demo showMethod >>>>>>>段誉 1 getName():Thread-1 ------- Thread.currentThread().getName():main
Demo showMethod >>>>>>>段誉 2 getName():Thread-1 ------- Thread.currentThread().getName():main
Demo showMethod >>>>>>>段誉 3 getName():Thread-1 ------- Thread.currentThread().getName():main
Demo showMethod >>>>>>>段誉 4 getName():Thread-1 ------- Thread.currentThread().getName():main
Demo showMethod >>>>>>>段誉 5 getName():Thread-1 ------- Thread.currentThread().getName():main
Demo showMethod >>>>>>>段誉 6 getName():Thread-1 ------- Thread.currentThread().getName():main
Demo showMethod >>>>>>>段誉 7 getName():Thread-1 ------- Thread.currentThread().getName():main
Demo showMethod >>>>>>>段誉 8 getName():Thread-1 ------- Thread.currentThread().getName():main
Demo showMethod >>>>>>>段誉 9 getName():Thread-1 ------- Thread.currentThread().getName():main
Test main 0 当前执行这行代码的线程:main
Test main 1 当前执行这行代码的线程:main
Test main 2 当前执行这行代码的线程:main
Test main 3 当前执行这行代码的线程:main
Test main 4 当前执行这行代码的线程:main
Test main 5 当前执行这行代码的线程:main
Test main 6 当前执行这行代码的线程:main
Test main 7 当前执行这行代码的线程:main
Test main 8 当前执行这行代码的线程:main
Test main 9 当前执行这行代码的线程:main

三个任务只有一个线程main在执行:

最新文章

  1. 雅美尓(yaml)实战
  2. dig 命令详解(转载) - 阿权的书房
  3. Embedded Database service fails to start after installing or migrating to Symantec Endpoint Protection (SEP) 12.1.5 (RU5)
  4. Unity3D中目标相对自身的前后左右方位判断
  5. lintcode : 二叉树的序列化和反序列化
  6. TestNG 与 Junit的比较(转)
  7. VC-关于VC++ 6.0的那些事儿
  8. Drupal设置首页默认内容
  9. headfirst设计模式(2)—观察者模式
  10. luogu 1291 概率期望递推
  11. GCC后端移植杂记
  12. 9.Redis高可用-哨兵
  13. PHP-问题处理Fatal error: Uncaught Error: Call to undefined function mb_strlen()
  14. java+js实现展示本地文件夹下的所有图片demo[申明:来源于网络]
  15. 欧拉函数(C语言实现)
  16. 用javascript判断当前是安卓平台还是ios平台
  17. Android Error:Execution failed for task &#39;:app:compileDebugJavaWithJavac&#39; 解决方案
  18. Docker的入门使用(初探总结)
  19. TensorFlow学习线路
  20. Nmap参数说明

热门文章

  1. linux 杂
  2. php 利用迭代器遍历文件夹
  3. linux下挂载磁盘操作
  4. oracle以逗号分隔查询结果列表
  5. phpStudy1——PHP文件获取html提交的参数
  6. 【校招面试 之 C/C++】第17题 C 中的malloc相关
  7. lambda表达式&amp;map&amp;filter&amp;yield
  8. 利用委托机制处理.NET中的异常
  9. Linux 添加硬盘
  10. maven 编译的时候总是报一些奇怪的错误 比如 surefire-boot 2.10 .jar 可是私服里查看本来就没有这个高的版本。