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),那这个 ...
随机推荐
- linux kernel相关学习资料的收集与周边
<<linux内核设计与实现>>读了一遍.穿线作用比较好. 收获一个网站,和三本书 https://kernelnewbies.org/ https://book.douban ...
- Django图书管理系统(前端对数据库的增删改查)
图书管理系统 出版社的管理 源码位置:https://gitee.com/machangwei-8/learning_materials/tree/master/%E9%A1%B9%E7%9B%AE/ ...
- 代码重复检查工具——python的使用CPD比较好用,clone digger针对py2,其他有名的如Simian PMD-CPD CloneDR CCCD CCFinder Bauhaus CodePro
代码重复检测: cpd --minimum-tokens 100 --files g:\source\python\ --language python >log.txt 输出类似: ===== ...
- Kotlin星投影与泛型约束详解
星投影(star projection): 继续来学习Kotlin泛型相关的东东,星投影(star projection),这是个啥东东呢?下面先来说一下概念: 1.对于Star<out T&g ...
- No.1.测试Synchronized加锁String字符串后的多线程同步状况
测试目的描述 Synchronized关键字锁定String字符串可能会带来严重的后果, 尽量不要使用 synchronized(String a) 因为JVM中,因为字符串常量池具有缓冲功能! 接下 ...
- 只有tcp6
为什么 netstat 对某些服务只显示了 tcp6 监听端口 tags: linux 最近偶尔发现一个比较奇怪的现象,netstat 查看监听的服务端口时,却只显示了 tcp6 的监控, 但是服务明 ...
- 物体检测方法(1) - YOLO 详解
最近遇到一些卡证识别的检测问题,打算先把理论知识梳理一下,随后还会梳理一版代码注释. 以前的region+proposal来检测的框架,这一系列速度和精度不断提高,但是还是无法达到实时.存在的主要问题 ...
- iota妙用
itoa可以套公式,下面的依旧会按照公式运算 package main import "fmt" func main() { const ( b = 1 << (10 ...
- DOS窗口操作MySQL数据库
本周学习内容: 1.学习MySQL数据库.Linux私房菜: 2.等级评测培训: 3.练习MySQL数据库.练习CentOS7: 实验内容: 1.使用DOS窗口进入MySQL数据库 2.解决MySQL ...
- C语言实现金字塔
#include <stdio.h> int main(void) { int i=0, j =0, k= 0, line; printf("请输入金字塔的总行数:") ...