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线程
@Override
public void run() {
System.out.println("Runnable "+Thread.currentThread().getName());
}
}){
public void run() {
System.out.println("thread = "+Thread.currentThread().getName());
};
}.start();
猜猜执行结果是什么?为什么?最后我给你们答案。奖励分多多threadjava线程
首先是复写 ... thread
其次是未定义线程名 ... Thread
最后是显示当前线程 ... 0另外,你可不可以帮我解决个问题,我这里也纠结,呵呵 ... http://bbs.csdn.net/topics/390594004
可能一部分童鞋看过Thread的run方法的源码
public void run(){
if(target!=null)//target是Runnable对象
target.run();
}
晓得这个的童鞋可能就觉得会执行Runnable中的run方法!这部分童鞋忽略一个重要的问题
就是new Thread(){public void run(){}}.start();该匿名类继承了Thread并覆写run方法
根据多态性原理 很容易判断会执行覆写的run方法
简单的多态问题?
3楼的朋友,可不可以帮我解决下问题 ?http://bbs.csdn.net/topics/390594004
感谢
if (target != null) {
target.run();
}
}而其中的target其实就是Thread的构造方法中的Runable类也就是那个匿名类,当start的时候,就会执行Thread中的run方法,如果run没的重写,那么就执行target.run(),否则就执行重写的那段代码。而这里虽然target不是空的,但重写run后,上面这段代码就被覆盖,不能执行target.run(),所以只打印"Thread ..."这段当然就在重写的run中加上super.run(),两就就都可以打印出来了
3楼的朋友,可不可以帮我解决下问题 ?http://bbs.csdn.net/topics/390594004
感谢
已经一针见血的回复了你