我是否需要显式导入Thread类?

时间:2014-03-02 07:33:06

标签: java multithreading compiler-errors

因此,如果删除import语句,以下非线性的线程示例不会编译。但是,早些时候我没有导入Thread类。有没有人通过这个,请帮助我。

import java.lang.Thread;
class Test {
 public static void main(String args[]) {
  Thread t = Thread.currentThread();

  System.out.println("current thread is "+t);

  t.setName("amar");
  System.out.println("after name change "+t);

  try {
   for(int n=5;n>0;n--) {
    System.out.println(n);
    Thread.sleep(1000);
   }
  }catch(InterruptedException e) {
   System.out.println("main interrupted");
  }
 }
}

1 个答案:

答案 0 :(得分:6)

您不需要导入java.lang中的任何类。 java.lang中的类通常可以在没有显式导入的情况下使用。

  

编译单元自动访问其包中声明的所有类型,并自动导入预定义包java.lang中声明的所有公共类型。” - {{3} }。

当您声明另一个与java.lang类同名的类时,可能需要显式导入java.lang类的唯一情况。在某些情况下, 类可能优先于java.lang中的类,强制您导入java.lang类,或使用其完全限定名称。

最好避免声明与常用Java库类名称相同的类,尤其是java.lang中的类。