new Thread(new Runnable(){
@Override
public void run() {
System.out.println("Runnable "+Thread.currentThread().getName());
}
}){
public void run() {
System.out.println("thread = "+Thread.currentThread().getName());
};
}.start();
猜猜执行结果是什么?为什么?最后我给你们答案。奖励分多多threadjava线程

解决方案 »

  1.   

    给我分吧,很简单啦,肯定是thread = Thread-0咯 ... 
    首先是复写 ... thread
    其次是未定义线程名 ... Thread 
    最后是显示当前线程 ... 0另外,你可不可以帮我解决个问题,我这里也纠结,呵呵 ... http://bbs.csdn.net/topics/390594004
      

  2.   

    毫无疑问执行结果是:"thread =..."
    可能一部分童鞋看过Thread的run方法的源码 
    public void run(){
          if(target!=null)//target是Runnable对象
             target.run();

    晓得这个的童鞋可能就觉得会执行Runnable中的run方法!这部分童鞋忽略一个重要的问题 
    就是new Thread(){public void run(){}}.start();该匿名类继承了Thread并覆写run方法
    根据多态性原理  很容易判断会执行覆写的run方法
      

  3.   

    thread=..
    简单的多态问题?
      

  4.   


    3楼的朋友,可不可以帮我解决下问题 ?http://bbs.csdn.net/topics/390594004 
    感谢
      

  5.   

    打印出来"Thread ",因为,你重写了run方法,源码中的run方法是这么写的 public void run() {
            if (target != null) {
                target.run();
            }
        }而其中的target其实就是Thread的构造方法中的Runable类也就是那个匿名类,当start的时候,就会执行Thread中的run方法,如果run没的重写,那么就执行target.run(),否则就执行重写的那段代码。而这里虽然target不是空的,但重写run后,上面这段代码就被覆盖,不能执行target.run(),所以只打印"Thread ..."这段当然就在重写的run中加上super.run(),两就就都可以打印出来了
      

  6.   


    3楼的朋友,可不可以帮我解决下问题 ?http://bbs.csdn.net/topics/390594004 
    感谢
    已经一针见血的回复了你