public class TestRun{
public static void main(String[] args){
Runnable r = new Runnable(){
public void run(){
System.out.print("Cat");
}
};
Thread t = new Thread(r){
public void run(){
System.out.print("Dog");
}
};
t.start();
t.run();
}
}打印结果是DogDog。
以下摘自JDK5.0帮助,Thread类中的start方法:“使该线程开始执行;Java 虚拟机调用该线程的 run 方法。”
run方法:“如果该线程是使用独立的 Runnable 运行对象构造的,则调用该 Runnable 对象的 run 方法;否则,该方法不执行任何操作并返回。 ”从start帮助中看不出为什么调用的是Thread类的run方法,但是run方法的帮助明确指出调用的就是Runnable 对象的 run 方法,那怎么还打印Dog?
public static void main(String[] args){
Runnable r = new Runnable(){
public void run(){
System.out.print("Cat");
}
};
Thread t = new Thread(r){
public void run(){
System.out.print("Dog");
}
};
t.start();
t.run();
}
}打印结果是DogDog。
以下摘自JDK5.0帮助,Thread类中的start方法:“使该线程开始执行;Java 虚拟机调用该线程的 run 方法。”
run方法:“如果该线程是使用独立的 Runnable 运行对象构造的,则调用该 Runnable 对象的 run 方法;否则,该方法不执行任何操作并返回。 ”从start帮助中看不出为什么调用的是Thread类的run方法,但是run方法的帮助明确指出调用的就是Runnable 对象的 run 方法,那怎么还打印Dog?
解决方案 »
- 服务器文件路径出错
- webservice调用asmx的问题
- 根据软件需求设计软件
- 初学者,学习写猜数字的游戏program.有点疑问请高手帮忙
- 大侠进来帮帮忙,我要用Xerces分析一个XML文件(内存中的数据),要找出特定几个元素的所有记录,怎么实现,希望给代码,谢谢
- Servlet与JSP核心编程 和 JSP设计(第三版)哪本书好
- 关于格式化一个object类型的数据的问题
- 一个令人困惑的问题(JAVAC的BUG吗?)谁能给我一个确切的答案
- 如何从pem格式的私钥文件中读取私钥
- 数据类型转换
- No suitable driver~~~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- 英雄请进....一个联动的问题!!!
必须是start
文档中提及的“使用独立的 Runnable 运行对象构造的”并不是单指Runnable 对象,Runnable 是个接口,那Thread t当然也是独立的 Runnable 运行对象。
你可以查看Thread类,是Thread implements Runnable,继承了Runnable
看你的代码Thread t = new Thread(r){}已经将run方法覆盖了,当然运行覆盖后的run方法。
你混淆的地方在于
文档中提及的“使用独立的 Runnable 运行对象构造的”并不是单指Runnable 对象,Runnable 是个接口,那Thread t当然也是独立的 Runnable 运行对象。
你可以查看Thread类,是Thread implements Runnable,继承了Runnable
看你的代码Thread t = new Thread(r){}已经将run方法覆盖了,当然运行覆盖后的run方法。=====================是我糊涂了,Thread类就是继承了Runnable接口的,如果通过Thread(Runnable target) 构造的实例调用start和run方法时都是要调用到target中定义的run方法:
public void run() {
if (target != null) {
target.run();
}
当这段代码中的匿名Thread类已经将run方法覆写了我晕
就应该打印Cat你的匿名Thread已经覆写了run(),那么start之后自动调用的run就是你覆写过的,就不像默认的去调用r.run了。