当前位置:编程学习 > JAVA >>

求解下面有关java的代码(尤其对第七行getName()的使用和Thread.currentThread()有困惑)

public class TestJoin extends Thread {
  public TestJoin(String name){
super(name);
}
public void run(){
for(int i=0;i<5;i++){
System.out.println(getName()+i);//第七行
}
}
public static void main(String[] args) {
 
for(int i=0;i<10;i++){
if(i==5){
//实例化JoinTest线程对象
Thread tj=new TestJoin("半路杀出线程"+i);
tj.start();
try {
tj.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println(Thread.currentThread().getName()+i);
}

--------------------编程问答-------------------- 有什么不理解的啊 第七行输出是对的啊,  --------------------编程问答-------------------- 这里的函数是String java.lang.Thread.getName()你就明白了吧

--------------------编程问答-------------------- 第7行的 getName() 是个成员方法,只能通过对象引用。(相当于 this.getName()。)
在这个地方也可以用:Thread.currentThread().getName(); 其中Thread.currentThread()返回当前对象的引用,就是this.
可以验证 this.equals(Thread.currentThread()) 为true.
         getName().equals(Thread.currentThread().getName())为true.

但在下面的main 方法里,却不能直接用getName(),因为main()方法是静态方法。所以只能用Thread提供的静态方法currentThread()来获得当前对象的引用,再调用成员方法getName()得到线程名。 --------------------编程问答-------------------- Thread.currentThread().getName(); 返回的是Thread-1
this.getname返回的是-半路杀出线程
--------------------编程问答-------------------- Q Wq wy 我今天看到 北大青鸟的这个代码,我也在第7行,看不明白,前面都没对象怎么调用的方法,我也是不理解
补充:Java ,  Java相关
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,