Thread.currentThread与this的区别
在看多线程的时候,看到这个知识点,感觉需要验证一下。
一:线程自启动
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的区别的更多相关文章
- Thread.currentThread()和this的区别——《Java多线程编程核心技术》
前言:在阅读<Java多线程编程核心技术>过程中,对书中程序代码Thread.currentThread()与this的区别有点混淆,这里记录下来,加深印象与理解. 具体代码如下: pub ...
- Thread.currentThread()与this的区别
Thread.currentThread()与this的区别: Thread.currentThread()方法返回的是对当前正在执行的线程对象的引用,this代表的是当前调用它所在函数所属的对象的引 ...
- Java Thread.currentThread()和This的区别
感谢原文作者:王婷婷-Smily 原文链接:https://blog.csdn.net/dfshsdr/article/details/92760135 缘由 很多人认为多线程中的Thread.cur ...
- Thread.currentThread()和this的区别
1. Thread.currentThread()可以获取当前线程的引用,一般都是在没有线程对象又需要获得线程信息时通过Thread.currentThread()获取当前代码段所在线程的引用. 2. ...
- 关于 Thread.currentThread()
currentThread() 到底是什么? 其实currentThread() 只是Thread 的一个静态方法.返回的正是执行当前代码指令的线程引用: /** * Returns a refer ...
- java 笔记 Thread.currentThread().getContextClassLoader() 和 Class.getClassLoader()区别
查了一些资料也不是太明白两个的区别,但是前者是最安全的用法 打个简单的比方,你一个WEB程序,发布到Tomcat里面运行.首先是执行Tomcat org.apache.catalina.startup ...
- Java 多线程 ---- 线程中this与 Thread.currentThread()线程的区别
总结起来一句话:在Thread中调用this其实就是调用Thread私有Runnable类型的target,target是Thread类的一个属性,而Thread.currentThread()是指新 ...
- Thread.currentThread().getName() ,对象实例.getName() 和 this.getName()区别
原文链接:http://www.cnblogs.com/signheart/p/922dcf75dd5fe6b418d4475af89c4664.html 使用Thread.currentThread ...
- Thread.currentThread().getContextClassLoader().loadClass(className)和Class.forName(className)的区别
一.正文: 有去看开源框架的童鞋,应该会经常看到如下代码:Thread.currentThread().getContextClassLoader().loadClass(className),那这个 ...
随机推荐
- 使用fail2ban预防被挖洞的笔记
参考:https://blog.csdn.net/dorisnzy/article/details/82926067 1.安装fail2ban: yum -y install epel-release ...
- LabelEncoder save 离线使用
For me the easiest way was exporting LabelEncoder as .pkl file for each column. You have to export t ...
- Red Hat Enterprise Linux 8正式发布
现在CENTOS 8还没有发布. 了解其主要特点. https://developers.redhat.com/blog/2019/05/07/red-hat-enterprise-linux-8-n ...
- Druid Spring Boot Starter 从配置到简单运行 -解决zone不匹配 -解决dataSource加载失败
Druid Spring Boot Starter 中文 | English Druid Spring Boot Starter 用于帮助你在Spring Boot项目中轻松集成Druid数据库连接池 ...
- CSS 相邻元素选择器
相邻兄弟选择器(Adjacent sibling selector)可选择紧接在另一元素后的元素,且二者有相同父元素.选择相邻兄弟 如果需要选择紧接在另一个元素后的元素,而且二者有相同的父元素,可以使 ...
- RCNN,Fast RCNN,Faster RCNN 的前生今世:(2) R- CNN (3,2,1)
3.三次IOU 2.2次model run 1,一次深度神经网络 rcnn主要作用就是用于物体检测,就是首先通过selective search 选择2000个候选区域,这些区域中有我们需要的所对 ...
- PostgreSQL 抛出错误信息(错误行号)
抛出错误行号是我们在写SQL中常用到的,在SQL Server和Oracle中都很简单,但是在PostgreSQL怎么实现呢?在网上查了下资料只有pg_exception_context包含错误行,我 ...
- 《挑战30天C++入门极限》C++类的继承与多重继承的访问控制
C++类的继承与多重继承的访问控制 在前面的练习中我们一直在使用public的继承方式,即共有继承方式,对于protected和private继承方式,即保护继承与私有继承方式我们并没有讨论. ...
- Oracle自动备份(多个库),压缩打包,删除原文件
1.创建一个database_Backup.bat文件,用记事本打开 内容参考如下:(楼主这里自动备份了四个数据库) set "now=%date:~0,4%%date:~5,2%%date ...
- Lua chunk文件结构
1.lua执行经过: xx.lua源码文件------->执行(lua虚拟机) 隐式调用luac编译器 我们可以直接用luac命令去编译lua源码文件,然后用编译后的文件运行在lvm(lua虚拟 ...