拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
Thread.currentThread()不是返回当前程序运行的线程,而是返回Thread.currentThread()这句代码执行时所在的线程。
所以看到,新的分线程构造时代码在主线程中执行,而run方法内的代码是分线程中执行的。
看输出很容易理解
1、new一个Thread对象的时候默认的名字就是Thread-n格式的,你可以看看Thread源码。2、你这就是一个线程对象,this在你这样使用的情况下,是当前的线程了。3、Thread.currentThread()永远都是返回当前运行的线程。
new
Thread
Thread-n
this
Thread.currentThread()
构造方法运行结果可以理解,但是为什么run方法的运行结果不是setName里的testThread而是thread呢?
1.getName()方法是从Thread类继承来的,看看Thread类的getName()方法就知道了:
/** * Returns this thread's name. * * @return this thread's name. * @see #setName(String) */ public final String getName() { return String.valueOf(name); }
2.是3.是构造器中,Thread.currentThread()是main线程,run方法中的Thread.currentThread()是当前线程
Thread.currentThread()不是返回当前程序运行的线程,而是返回Thread.currentThread()这句代码执行时所在的线程。
所以看到,新的分线程构造时代码在主线程中执行,而run方法内的代码是分线程中执行的。
看输出很容易理解
1、
new
一个Thread
对象的时候默认的名字就是Thread-n
格式的,你可以看看Thread
源码。2、你这就是一个线程对象,
this
在你这样使用的情况下,是当前的线程了。3、
Thread.currentThread()
永远都是返回当前运行的线程。构造方法运行结果可以理解,但是为什么run方法的运行结果不是setName里的testThread而是thread呢?
1.getName()方法是从Thread类继承来的,看看Thread类的getName()方法就知道了:
2.是
3.是
构造器中,Thread.currentThread()是main线程,run方法中的Thread.currentThread()是当前线程