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在执行:

Android-Java-Thread start run的区别的更多相关文章

  1. Java Thread 的 run() 与 start() 的区别

    Java Thread 的使用 Java Thread 的 run() 与 start() 的区别 Java Thread 的 sleep() 和 wait() 的区别             1. ...

  2. Java并发编程:Java Thread 的 run() 与 start() 的区别

    1. sleep 和 wait 方法解释 sleep()方法是Thread类里面的,主要的意义就是让当前线程停止执行,让出cpu给其他的线程,但是不会释放对象锁资源以及监控的状态,当指定的时间到了之后 ...

  3. java Thread 类 run 和 start 方法区别

    public class ThreadModle { public static void main(String[] args) throws InterruptedException { Thre ...

  4. Android中Thread和Service的区别zz

    1). Thread:Thread 是程序执行的最小单元,它是分配CPU的基本单位.可以用 Thread 来执行一些异步的操作. 2). Service:Service 是android的一种机制,当 ...

  5. Java Thread 的 sleep() 和 wait() 的区别

    Java Thread 的使用 Java Thread 的 run() 与 start() 的区别 Java Thread 的 sleep() 和 wait() 的区别       1. sleep ...

  6. Java多线程系列--“基础篇”03之 Thread中start()和run()的区别

    概要 Thread类包含start()和run()方法,它们的区别是什么?本章将对此作出解答.本章内容包括:start() 和 run()的区别说明start() 和 run()的区别示例start( ...

  7. Java多线程3:Thread中start()和run()的区别

    原文:http://www.cnblogs.com/skywang12345/p/3479083.html start() 和 run()的区别说明start():它的作用是启动一个新线程,新线程会执 ...

  8. Java基础加强之并发(三)Thread中start()和run()的区别

    Thread中start()和run()的区别 start() : 它的作用是启动一个新线程,新线程会执行相应的run()方法.start()不能被重复调用.run()   : run()就和普通的成 ...

  9. Java多线程和并发(二),Thread中的start和run的区别

    目录 1.调用run方法 2.调用start方法 3.start和run的区别 二.Thread中的start和run的区别 1.调用run方法 public class ThreadTest { p ...

  10. Java Thread之start和run方法的区别

    原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11421515.html start 用start方法来启动线程,真正实现了多线程运行,这时无需等待ru ...

随机推荐

  1. 配置MySQL 5.6的主从复制

    工具/原料   Windows 7 64位 MySQL 5.6 配置新数据库的主从复制   1 先在主数据库中创建新数据库rep_test. 然后编辑主数据库的my.ini文件 在[mysqld]节点 ...

  2. $(this).form("validate") 始终返回false

    onsubmit 提交前触发,返回 false 来阻止提交动作. validate 进行表单字段验证,当全部字段都有效时返回 true .该方法和 validatebox 插件一起使用. 解决:注释掉 ...

  3. where T:new() 是什么意思

    经常看到方法后面加where T:new() ,下面来解释下 比如如下这个方法   protected static T CreateNewInstance<T>() where T :  ...

  4. 交叉字符串 · Interleaving String

    [抄题]: 给出三个字符串:s1.s2.s3,判断s3是否由s1和s2交叉构成.(洗牌) 比如 s1 = "aabcc" s2 = "dbbca" - 当 s3 ...

  5. [leetcode]680. Valid Palindrome II有效回文II(可至多删一原字符)

    Given a non-empty string s, you may delete at most one character. Judge whether you can make it a pa ...

  6. [leetcode]392. Is Subsequence 验证子序列

    Given a string s and a string t, check if s is subsequence of t. You may assume that there is only l ...

  7. 21-js 实现评论时间格式转化

    js里面要用可以用伊尔表达式,循环是用js: document.getElementById("${pj.pltime }").innerHTML = dateToGMT(&quo ...

  8. php socket 编程(一)

    socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信.在Internet上的主机一般运行了多个服务软件,同时提 ...

  9. centos6.6 下 安装 php7 按 nginx方式

    1.安装必要的依赖库 > yum -y install gd zlib libjpeg libjpeg-devel libpng libpng-devel freetype freetype-d ...

  10. Luogu 3959 [NOIP2017] 宝藏

    NOIP2017最后一道题 挺难想的状压dp. 受到深度的条件限制,所以一般的状态设计带有后效性,这时候考虑把深度作为一维,这样子可以保证所有状态不重复计算一遍. 神仙预处理:先处理出一个点连到一个集 ...