Thread.currentThread() 返回当前线程对象,也就是执行这句代码这个线程。
this,也是当前线程对象~~~~
如果线程是start()方法调用起来的,那么二者是相等的。 不过,run()方法有可能被直接调用,这种情况下就不相等了。
new Thread("aaa"){ public void run(){ System.out.println(Thread.currentThread() == this); new Thread("bbb"){ public void run(){ System.out.println(Thread.currentThread() == this); } }.start();
new Thread("ccc"){ public void run(){ System.out.println(Thread.currentThread() == this); } }.run(); } }.start();
结果是: true true false
第3个ccc线程是用run()方法调用的,那么就相当于new了一个普通类,调用了它的一个方法,仅此而已。 Thread.currentThread()返回的是aaa线程,this是ccc对象,所以不相等。
|