黑马程序员技术交流社区
标题:
java线程问题
[打印本页]
作者:
wangjinyu501
时间:
2013-4-8 12:08
标题:
java线程问题
package com.debug.java;
public class ThreadDemo extends Thread{
private String threadName;
public ThreadDemo(String threadName) {
this.threadName = threadName;
}
public ThreadDemo() {
}
/*
* 重写run方法
*/
@Override
public void run() {
super.run();
System.out.println(Thread.currentThread().getName());
}
/**
* @param args
*/
public static void main(String[] args) {
System.out.println("main线程:"+Thread.currentThread().getName());
Thread thread1=new Thread("构造方法创建线程名");
ThreadDemo thread2=new ThreadDemo();
thread1.start();
thread2.start();
}
}
输出是:main线程:main
Thread-0
我想问一下,为什么Thread类的Runnable方法没有输出呢?
作者:
张洪慊
时间:
2013-4-8 12:25
为什么Thread类的Run方法没有输出呢?
public void run() {
super.run();//这个位置调用Thread类的run方法
/*
java(API 文档):
如果该线程是使用独立的 Runnable 运行对象构造的,则调用该 Runnable 对象的 run 方法;
否则,该方法不执行任何操作并返回。
说白了,Thread中的run方法的方法体不执行任何语句.
*/
System.out.println(Thread.currentThread().getName());
}
复制代码
作者:
绿树林
时间:
2013-4-8 12:56
Thread类中的run方法本身并不包含输出,如下。
public void run() {
// TODO Auto-generated method stub
super.run();
}
你重写的run方法属于ThreadDemo类下的run方法,并未修改原Thread类的run方法,所以
继承Thread类的ThreadDemo通过重写的run方法输出内容,而通过Thread类new出的对象依然调用原run方法,即啥都不打印。
作者:
HM刘俊
时间:
2013-4-8 14:16
就好比构造函数,他里面根本没有什么输出语句,怎存在输出呢?
作者:
黑马李杰
时间:
2013-4-9 07:53
为什么Thread类的Runnable方法没有输出呢?Runnable是个接口,不是方法,你想说的super();调用了父类Runnable中的run方法,为什么Runnable中的run()方法没有执行吧,因为Runnable是个接口,方法没有具体实现。
作者:
王怀亮
时间:
2013-4-9 13:11
Runnable接口中的所有方法都是抽象方法,没有方法实现,所以即便你用super语句调用了他的run()方法,因为该方法没有任何方法体,所以根本不会有任何反应
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2