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

tph*_*312 2 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");
  }
 }
}
Run Code Online (Sandbox Code Playgroud)

Ste*_*n C 6

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

" 编译单元自动访问其包中声明的所有类型,并自动导入预定义包中声明的所有公共类型java.lang. " - JLS第7章.

唯一可能需要显式导入java.lang类的情况是,您声明了另一个与类同名的java.lang类.在某些情况下,班可接管类中的优先级java.lang,迫使你要么导入java.lang类,或者使用其全名.

避免声明具有与常用Java库类相同名称的类是一个好主意,尤其是那些java.lang.