日期:2014-05-20  浏览次数:20663 次

关于线程的小问题,求解释,谢谢!!
[code=Java][/code]
public class ThreadDemo1{
public static void main(String args[]){
TestThread t =new TestThread();
new Thread(t).start();//方式 1 有“Thread-1”和“main Thread”运行
t.start(); //方式 2 有“Thread -0”和“main Thread”运行
while(true){
System.out.println("main thread is running");
}
}
}
 class TestThread extends Thread{
public void run(){
while(true){
System.out.println(Thread.currentThread().getName() + 
" is running");
}
}

请问:
1.为什么出现上述这种?
2.方式 1 是不是仅仅为了实现多态性?

------解决方案--------------------
http://www.ticmy.com/?p=230
------解决方案--------------------
首先TestThread()让Thread里面的静态变量(统计线程数的)初始化为o;然后构造方法thread(runnable)让其+1;

------解决方案--------------------
TestThread t =new TestThread();让统计线程数的静态变量初始化为0;

new Thread(t)用的是构造方法thread(runadble)让统计线程数+1;
这就是构造方法实现多态,

------解决方案--------------------
也不知道你问的是哪一方面的问题,new Thread(t).start();//方式 1 有“Thread-1”和“main Thread”运行

这里可以告诉你的话,每一个main函数都会分配一个线程,该线程为实时线程,而new Thread(t)是使用public Thread(Runnable target)构造方法来分配新的 Thread 对象。这种构造方法与 Thread(null, target,gname) 具有相同的作用,其中的 gname 是一个新生成的名称。自动生成的名称的形式为 “Thread-”+n,其中的 n 为整数。
该构造方法也就是你所说的“多态性”:向父类转型,即向上转型,这种转型就是自动的。
也不知道有没有你想知道的。。说了这么一些,有问题再问,我们一起解决!