参考:http://bbs.csdn.net/topics/391872079

 package thread.demo01;

 public class MyThread extends Thread {

     public MyThread() {
System.out.println("构造方法的打印 : " + Thread.currentThread().getName());
} @Override
public void run() {
System.out.println("run方法的打印: " + Thread.currentThread().getName());
}
}
 package thread.demo01;

 public class Run2 {

     public static void main(String[] args) {
MyThread myThread = new MyThread();
myThread.start();
} }

MyThread的构造方法是main现成调用的

而run方法是被新开的线程调用

所以输出结果是:

 package thread.demo01;

 public class Run2 {

     public static void main(String[] args) {
MyThread myThread = new MyThread();
// myThread.start();
myThread.run();
} }

若更改代码为如上,run方法则是main线程调用,所以输出结果:

----------------------------------------------------------------------------------

 package thread.demo01;

 public class CurrentOperate extends Thread {

     public CurrentOperate() {
System.out.println("CountOperate -- begin");
System.out.println("Thread.currentThread().getName() = " + Thread.currentThread().getName());
System.out.println("this.getName() = " + this.getName());
System.out.println("CountOperate -- end");
} @Override
public void run() {
System.out.println("run -- begin");
System.out.println("Thread.currentThread().getName() = " + Thread.currentThread().getName());
System.out.println("this.getName() = " + this.getName());
System.out.println("run -- end");
} }
 package thread.demo01;

 public class Run {

     public static void main(String[] args) {
CurrentOperate c = new CurrentOperate();
Thread c1 = new Thread(c);
c1.start();
} }

和上面一样,这边的有个 Thread-1,是因为 CurrentOperate 传给了 Thread,所以

调用run方法 不是main而是c1所在的线程。

Thread.currentThread().getName()是获得调用这个方法的线程的名字,在main线程中调用的当然是main了。

而this.getName()这个方法是获取当前对象的名字,只是单纯的方法的调用。

----------------------------------------------------------------------------------------------

 package thread.demo02;

 public class CountOperate extends Thread {

     public CountOperate() {
System.out.println("CountOpreate -- begin");
System.out.println("Thread.currentThread().getName() = " + Thread.currentThread().getName());
System.out.println("Thread.currentThread().isAlive() = " + Thread.currentThread().isAlive());
System.out.println("this.getName() = " + this.getName());
System.out.println("this.isAlive() = " + this.isAlive());
System.out.println("CountOpreate -- end");
} @Override
public void run() {
System.out.println("run -- begin");
System.out.println("Thread.currentThread().getName() = " + Thread.currentThread().getName());
System.out.println("Thread.currentThread().isAlive() = " + Thread.currentThread().isAlive());
System.out.println("this.getName() = " + this.getName());
System.out.println("this.isAlive() = " + this.isAlive());
System.out.println("run -- end");
} }
 package thread.demo02;

 public class Run {

     public static void main(String[] args) {
CountOperate c = new CountOperate();
Thread t1 = new Thread(c);
System.out.println("main begin t1 isAlive = " + t1.isAlive());
// t1.setName("A");
t1.start();
System.out.println("main end t1 isAlive = " + t1.isAlive());
} }

Thread--currentThread()的更多相关文章

  1. Java多线程之this与Thread.currentThread()的区别——java多线程编程核心技术

      package mythread; public class CountOperate extends Thread{ public CountOperate(){ System.out.prin ...

  2. 关于Thread.currentThread()和this的差异

    重新来看多线程时,被这结果搞懵逼了.不多说,直接上代码: public class MyThread02 extends Thread { public MyThread02() { System.o ...

  3. ClassLoader,Thread.currentThread().setContextClassLoader,tomcat的ClassLoader

    实际上,在Java应用中所有程序都运行在线程里,如果在程序中没有手工设置过ClassLoader,对于一般的java类如下两种方法获得的ClassLoader通常都是同一个 this.getClass ...

  4. Class.forName() 初始化、Thread.currentThread().getContextClassLoader().getResourceAsStream

    Class.forName() 和 ClassLoader.loadClass()的区别? Class.forName() 和 Class.forName().NewInstance()的区别? Cl ...

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

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

  6. String.valueOf(Thread.currentThread().getContextClassLoader().getResource("")) 获取项目的绝对路径(shiro项目中来的八)

    一,上代码 String.valueOf(Thread.currentThread().getContextClassLoader().getResource("")) file: ...

  7. Not on FX application thread; currentThread = AWT-EventQueue-0的解决方法

    swing awt跑javafx报了这问题 Not on FX application thread; currentThread = AWT-EventQueue-0 解决方法 Platform.r ...

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

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

  9. Thread.currentThread().getContextClassLoader().getResourceAsStream

    Thread.currentThread().getContextClassLoader().getResourceAsStream 2014年04月02日 06:49:47 OkidoGreen 阅 ...

  10. 演示Thread.sleep(100)和Thread.currentThread().isInterrupted()+@Deprecated:将方法标注为废弃的方法

    package charpter08; public class TestInterrupt01 { public static void main(String[] args) { Processo ...

随机推荐

  1. B. Sport Mafia 二分

    B. Sport Mafia time limit per test 2 seconds memory limit per test 256 megabytes input standard inpu ...

  2. redisTemplate注入为空

    springboot2.*集成redis时,redis工具类中的redisTemplate注入后总是为空. 问题代码还原: 1.工具类定义成静态工具类,@Resource注入redisTemplate ...

  3. dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.63.dylib

    本地环境报错有 3 处,如下: 1. 执行命令,无论执行 php 的什么命令,统一报错 dyld: Library not loaded: /usr/local/opt/icu4c/lib/libic ...

  4. 二十三、SAP中内表的修改

    一.通过MODIFY关键字来修改内表的内容,it相当于全部内容,wa相当于一条内容 二.效果如下

  5. 解决对路径bin\roslyn..的访问被拒绝

    使用visual studio开发,一重新编译就会报错: 对路径“bin\roslyn\System.Reflection.Metadata.dll”的访问被拒绝 一开始的解决办法就是把bin下的文件 ...

  6. hive表字段注释显示乱码问题

    创建了一张hive表,对字段增加了注释,比如comment '注释内容' 之类的,但是在hive client查看时候却是乱码 比如: create table test_ultraedit ( id ...

  7. 通过while循环一步步实现九九乘法表

    # 打印#做出@列的效果height = int(input("height: ")) #用户输入一个高度 num_height = heightwhile num_height ...

  8. Android数据库(sqlite)之Room

    说在前面: 1.使用Room需要添加的依赖: dependencies { def room_version = "2.2.3" implementation "andr ...

  9. MFC双缓冲

    大家都知道包括windows桌面在内我们看到的一切都是系统画上去的,windows桌面就相当于一个黑板: <1>普通绘图就是直接在我们看得到的黑板上绘图 <2>双缓冲就是先在一 ...

  10. pythpon--类操作

    #coding=utf-8import numpy as npimport tensorflow as tfimport osos.environ["CUDA_VISIBLE_DEVICES ...