Android-Java-Thread start run的区别
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的区别的更多相关文章
- Java Thread 的 run() 与 start() 的区别
Java Thread 的使用 Java Thread 的 run() 与 start() 的区别 Java Thread 的 sleep() 和 wait() 的区别 1. ...
- Java并发编程:Java Thread 的 run() 与 start() 的区别
1. sleep 和 wait 方法解释 sleep()方法是Thread类里面的,主要的意义就是让当前线程停止执行,让出cpu给其他的线程,但是不会释放对象锁资源以及监控的状态,当指定的时间到了之后 ...
- java Thread 类 run 和 start 方法区别
public class ThreadModle { public static void main(String[] args) throws InterruptedException { Thre ...
- Android中Thread和Service的区别zz
1). Thread:Thread 是程序执行的最小单元,它是分配CPU的基本单位.可以用 Thread 来执行一些异步的操作. 2). Service:Service 是android的一种机制,当 ...
- Java Thread 的 sleep() 和 wait() 的区别
Java Thread 的使用 Java Thread 的 run() 与 start() 的区别 Java Thread 的 sleep() 和 wait() 的区别 1. sleep ...
- Java多线程系列--“基础篇”03之 Thread中start()和run()的区别
概要 Thread类包含start()和run()方法,它们的区别是什么?本章将对此作出解答.本章内容包括:start() 和 run()的区别说明start() 和 run()的区别示例start( ...
- Java多线程3:Thread中start()和run()的区别
原文:http://www.cnblogs.com/skywang12345/p/3479083.html start() 和 run()的区别说明start():它的作用是启动一个新线程,新线程会执 ...
- Java基础加强之并发(三)Thread中start()和run()的区别
Thread中start()和run()的区别 start() : 它的作用是启动一个新线程,新线程会执行相应的run()方法.start()不能被重复调用.run() : run()就和普通的成 ...
- Java多线程和并发(二),Thread中的start和run的区别
目录 1.调用run方法 2.调用start方法 3.start和run的区别 二.Thread中的start和run的区别 1.调用run方法 public class ThreadTest { p ...
- Java Thread之start和run方法的区别
原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11421515.html start 用start方法来启动线程,真正实现了多线程运行,这时无需等待ru ...
随机推荐
- C语言实现24点程序
一.简介 本程序的思想和算法来自于C语言教材后的实训项目,程序通过用户输入四个整数计算出能够通过加减乘除得到数字24的所有表达式,程序的设计有别于一般通过穷举实现的方式,效率得到提高.算法介绍如下: ...
- np.random.randn()、np.random.rand()、np.random.randint()
(1)np.random.randn()函数 语法: np.random.randn(d0,d1,d2……dn) 1)当函数括号内没有参数时,则返回一个浮点数: 2)当函数括号内有一个参数时,则返回秩 ...
- 使用maven将项目热发布到tomcat7的坑
首先是配置tomcat的用户权限问题,最好是配置最大的权限,要不然会报错,我之前就是一直报错 <role rolename="manager"/> <user u ...
- Dice
Dice http://acm.hdu.edu.cn/showproblem.php?pid=5012 Time Limit: 2000/1000 MS (Java/Others) Memory ...
- Redis网络协议
Redis网络协议较为简单,易于阅读. 命令或数据已\r\n结尾,但除了状态回复,其他数据都是二进制安全的(包含长度) 头部如下: + 正确的状态信息,具体信息是当前行+后面的字符. - 一条错误信 ...
- python 安装scikit!!!
首先,吐槽一下,真的是折腾好几天,一会更新这个,一会更新那个,总是各种奇葩问题诸如此类: cannot import check-build pip有新版本,需要更新(黄字) 其中scipy出错最多, ...
- discuz的diy功能介绍
可以通过页面操作的方式,完成页面布局设计,数据聚合,样式等常见的页面处理功能. 以管理员登陆discuz的前台时,会出现一个diy按钮. 流程,先设计框架,再完成数据的聚合. 定义模板时, ...
- 面向对象 Java练习
package xin.bao; public class Pingguo { private String Zhonglei;// 种类 public String getZhonglei() { ...
- 针对程序员的podcast
身为程序员们,必须要懂得合理的利用琐碎时间来提炼自身,或许上下班途中或骑行或徒步或...时,以下这些Podcasts对你有些许作用: The Hanselminutes podcast by Scot ...
- 学习Java的方法
许多人在刚开始学习Java时,会因为学习方法的不正确,而丧失信心,从而半途而废.所以,今天,巩固就要教教大家学习Java的方法. 1.多练习 编程其实是一个非常抽象的东西,要想学好它,就不能只是看看书 ...