我正在尝试使用线程,谁能告诉我以下代码中有什么问题。我在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会为您发现此错误,并引起您的注意。

10-06 16:10