我正在尝试使用线程,谁能告诉我以下代码中有什么问题。我在main中得到了NullPointerException
。
public class threadtest implements Runnable {
Thread t;
public threadtest(String name) {
Thread t = new Thread(name);
}
public void run() {
for(int i = 0; i <= 10; i++) {
try {
Thread.sleep(1000);
}
catch(Exception e) {
System.out.println(e);
}
}
}
public static void main(String args[]) {
threadtest ob = new threadtest("satheesh");
ob.t.start();
}
}
最佳答案
在构造函数中,您声明一个名为t
的局部变量,该变量使用与字段t
相同的名称。只需将Thread t
替换为this.t
或简单的t
即可:
public threadtest(String name) {
this.t=new Thread(name);
}
顺便说一句,强烈建议您使用大写字母开头 class 名称,即您的情况下的
ThreadTest
会是一个更好的名称。BTW2,一个不错的IDE会为您发现此错误,并引起您的注意。