问题描述
publicclassTestJoinextendsThread{publicTestJoin(Stringname){super(name);}publicvoidrun(){for(inti=0;i<5;i++){System.out.println(getName()+i);//第七行}}publicstaticvoidmain(String[]args){for(inti=0;i<10;i++){if(i==5){//实例化JoinTest线程对象Threadtj=newTestJoin("半路杀出线程"+i);tj.start();try{tj.join();}catch(InterruptedExceptione){e.printStackTrace();}}System.out.println(Thread.currentThread().getName()+i);}
解决方案
解决方案二:
有什么不理解的啊第七行输出是对的啊,
解决方案三:
这里的函数是Stringjava.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-1this.getname返回的是-半路杀出线程
解决方案六:
QWqwy我今天看到北大青鸟的这个代码,我也在第7行,看不明白,前面都没对象怎么调用的方法,我也是不理解