基础不太好,所以学的有些莫名其妙。
事情是这样的。public class ThreadDemo4
{
public static void main(String []args)
{
ThreadTest t=new ThreadTest();
new Thread(t).start();
new Thread(t).start();
new Thread(t).start();
new Thread(t).start();
}
}
class ThreadTest extends Thread
{
private int i=100;
public void run()
{
while(i>0)
{

System.out.println(Thread.currentThread().getName()+
" thread is sell ticket "+i--);
}
}
}这段程序如果把6。7。8。9行写成
new ThreadTest(t).start();
就出错。这是什么道理,书上说Thread.start()调用的是ThreadTest的RUN()函数。那么new ThreadTest(t).start();调用的是什么函数?不也是START吗?
谢谢各位前辈指点。

解决方案 »

  1.   

    new ThreadTest(t) 要调用ThreadTest含参数的构造函数,你的类里没有
      

  2.   

    为什么
    Thread(t).start();
    会调用ThreadTest.run()?不是很明白
      

  3.   

    Thread中run方法为
    public void run() {
    if (target != null) {
        target.run();
    }
        }里面的target指的就是t所代表的ThreadTest
      

  4.   

    ThreadTest t1=new ThreadTest();
    ThreadTest t2=new ThreadTest();
    ThreadTest t3=new ThreadTest();
    ThreadTest t4=new ThreadTest();
    t1.start();
    t2.start();
    t3.start();
    t4.start();
      

  5.   

    没有Thread(Thread thread)这个构造函数
    你在ThreadTest是继承Thread可直接调用其start()方法
    如果要像你那样
                     
                     ThreadTest t=new ThreadTest();
                      new Thread(t).start();
    new Thread(t).start();
    new Thread(t).start();
    new Thread(t).start();
    就应该写为class ThreadTest implements  Runnable