求解下面有关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相关