在看多线程的时候,看到这个知识点,感觉需要验证一下。

一:线程自启动

1.程序

 package com.jun.it.thread;

 public class MyThread extends Thread {
MyThread(){
System.out.println("----------");
System.out.println("name:"+Thread.currentThread().getName());
System.out.println("isActive:"+Thread.currentThread().isAlive());
System.out.println("thisName:"+this.getName());
System.out.println("thisIsActive:"+this.isAlive());
System.out.println("----------");
}
public void run(){
System.out.println("=======================");
System.out.println("name:"+Thread.currentThread().getName());
System.out.println("isActive:"+Thread.currentThread().isAlive());
System.out.println("thisName:"+this.getName());
System.out.println("thisIsActive:"+this.isAlive());
System.out.println("=======================");
}
}

测试类:

 package com.jun.it.thread;

 public class RunMyThread {
public static void main(String[] args) {
test1();
// test2();
}
/**
* 测试一
*/
public static void test1(){
MyThread myThread=new MyThread();
myThread.setName("AA");
myThread.start();
} /**
* 测试二
*/
public static void test2(){
MyThread myThread=new MyThread();
Thread thread=new Thread(myThread);
thread.setName("BB");
thread.start();
}
}

2.效果:

  

3.总结

  Thread.currentThread():表示当前的代码正在被谁调用。

  this:只能是当前的线程,在程序中,代表是myThread。

  PS:

  至于thread-0:每次新new的时候,在构造函数中,会定义默认的线程名。

二:线程被作为参数传入Thread

1.程序

  启动测试2

2.效果

  

3.总结

  根据上文的说法,this代表myThread,则说明,线程没有开启。

  在这个示例中,外部线程在start后启动,实际上调用的是内部线程的run方法开启的。

  Thread.currentThread()与this指向了不同的线程对象,Thread.currentThread()指向的是外部的线程,表示当前方法被外部线程thread调用;this指向内部线程myThread。

Thread.currentThread与this的区别的更多相关文章

  1. Thread.currentThread()和this的区别——《Java多线程编程核心技术》

    前言:在阅读<Java多线程编程核心技术>过程中,对书中程序代码Thread.currentThread()与this的区别有点混淆,这里记录下来,加深印象与理解. 具体代码如下: pub ...

  2. Thread.currentThread()与this的区别

    Thread.currentThread()与this的区别: Thread.currentThread()方法返回的是对当前正在执行的线程对象的引用,this代表的是当前调用它所在函数所属的对象的引 ...

  3. Java Thread.currentThread()和This的区别

    感谢原文作者:王婷婷-Smily 原文链接:https://blog.csdn.net/dfshsdr/article/details/92760135 缘由 很多人认为多线程中的Thread.cur ...

  4. Thread.currentThread()和this的区别

    1. Thread.currentThread()可以获取当前线程的引用,一般都是在没有线程对象又需要获得线程信息时通过Thread.currentThread()获取当前代码段所在线程的引用. 2. ...

  5. 关于 Thread.currentThread()

    currentThread()  到底是什么? 其实currentThread() 只是Thread 的一个静态方法.返回的正是执行当前代码指令的线程引用: /** * Returns a refer ...

  6. java 笔记 Thread.currentThread().getContextClassLoader() 和 Class.getClassLoader()区别

    查了一些资料也不是太明白两个的区别,但是前者是最安全的用法 打个简单的比方,你一个WEB程序,发布到Tomcat里面运行.首先是执行Tomcat org.apache.catalina.startup ...

  7. Java 多线程 ---- 线程中this与 Thread.currentThread()线程的区别

    总结起来一句话:在Thread中调用this其实就是调用Thread私有Runnable类型的target,target是Thread类的一个属性,而Thread.currentThread()是指新 ...

  8. Thread.currentThread().getName() ,对象实例.getName() 和 this.getName()区别

    原文链接:http://www.cnblogs.com/signheart/p/922dcf75dd5fe6b418d4475af89c4664.html 使用Thread.currentThread ...

  9. Thread.currentThread().getContextClassLoader().loadClass(className)和Class.forName(className)的区别

    一.正文: 有去看开源框架的童鞋,应该会经常看到如下代码:Thread.currentThread().getContextClassLoader().loadClass(className),那这个 ...

随机推荐

  1. 使用fail2ban预防被挖洞的笔记

    参考:https://blog.csdn.net/dorisnzy/article/details/82926067 1.安装fail2ban: yum -y install epel-release ...

  2. LabelEncoder save 离线使用

    For me the easiest way was exporting LabelEncoder as .pkl file for each column. You have to export t ...

  3. Red Hat Enterprise Linux 8正式发布

    现在CENTOS 8还没有发布. 了解其主要特点. https://developers.redhat.com/blog/2019/05/07/red-hat-enterprise-linux-8-n ...

  4. Druid Spring Boot Starter 从配置到简单运行 -解决zone不匹配 -解决dataSource加载失败

    Druid Spring Boot Starter 中文 | English Druid Spring Boot Starter 用于帮助你在Spring Boot项目中轻松集成Druid数据库连接池 ...

  5. CSS 相邻元素选择器

    相邻兄弟选择器(Adjacent sibling selector)可选择紧接在另一元素后的元素,且二者有相同父元素.选择相邻兄弟 如果需要选择紧接在另一个元素后的元素,而且二者有相同的父元素,可以使 ...

  6. RCNN,Fast RCNN,Faster RCNN 的前生今世:(2) R- CNN (3,2,1)

    3.三次IOU  2.2次model run  1,一次深度神经网络 rcnn主要作用就是用于物体检测,就是首先通过selective search 选择2000个候选区域,这些区域中有我们需要的所对 ...

  7. PostgreSQL 抛出错误信息(错误行号)

    抛出错误行号是我们在写SQL中常用到的,在SQL Server和Oracle中都很简单,但是在PostgreSQL怎么实现呢?在网上查了下资料只有pg_exception_context包含错误行,我 ...

  8. 《挑战30天C++入门极限》C++类的继承与多重继承的访问控制

        C++类的继承与多重继承的访问控制 在前面的练习中我们一直在使用public的继承方式,即共有继承方式,对于protected和private继承方式,即保护继承与私有继承方式我们并没有讨论. ...

  9. Oracle自动备份(多个库),压缩打包,删除原文件

    1.创建一个database_Backup.bat文件,用记事本打开 内容参考如下:(楼主这里自动备份了四个数据库) set "now=%date:~0,4%%date:~5,2%%date ...

  10. Lua chunk文件结构

    1.lua执行经过: xx.lua源码文件------->执行(lua虚拟机) 隐式调用luac编译器 我们可以直接用luac命令去编译lua源码文件,然后用编译后的文件运行在lvm(lua虚拟 ...