请教java程序的运行

书上的程序,大家帮着看看,运行时提示找不到“构造函数ThreadTest(ThreadTest)”谢谢啊!!class ThreadDemo { public static void main(String [] args) { ThreadTest t=new ThreadTest(); new ThreadTest(t).start(); new ThreadTest(t).start(); new ThreadTest(t).start(); new ThreadTest(t).start(); } } class ThreadTest implements Runnable { private int tickeds=100; public void run() { while(true) { if(tickeds>0) System.out.println(Thread.currentThread().getName() + " is saling tickeds " + tickeds--); } } }
2026年09月25日 10:12
有5个网友回答
网友(1):

仔细看看,你自己定义的ThreadTest类有带参(而且参数类型是 ThreadTest类 )的构造方法么???有start()方法么???

正确的写法:将 new ThreadTest(t).start(); 改成---
new Thread(t).start();

解释一下:Thread(线程类)有一个构造方法,参数类型为Runnable,而你的ThreadTest类实现了Runnable接口,所以可以作为Thread类的构造方法的参数..

网友(2):

LZ,你的错误在: new ThreadTest(t).start();

一楼的也写错了!囧………………

应该这样:
ThreadTest t = new ThreadTest();
new Thread(t).start();

修改后代码为:

public class test1 {
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 implements Runnable {
private int tickeds = 100;
public void run() {
while (true) {
if (tickeds > 0)
System.out.println(Thread.currentThread().getName()
+ " is saling tickeds " + tickeds--);
}
}
}

网友(3):

new ThreadTest(t).start();
LZ仔细看一下这个代码,是向ThreadTest()类里传递一个t(“ThreadTest()”)参数。
你的ThreadTest()里有这个构造方法吗?没有吧,所以报错。

可以直接t.start();

网友(4):

就代码来看,确实是有错误啊,new ThreadTest(t).start();
这句编译就应该出错了吧。
应该是这样的吧:
ThreadTest t=new ThreadTest();
t.start();

网友(5):

ThreadTest 类中,你没有这个带参数的构造函数啊。肯定会报错啦。。。。好好学学基础吧。。