我们都知道,创建线程的两个方法:1. 继承Thread借口;2. 实现Runnable接口就拿实现Runnable接口来说吧,一个程序如下:class PrintRunnable implements Runnable {
private String name;
private int sleepTime;
public PrintRunnable( String name ) {
this.name = name;
sleepTime = (int) ( Math.random() * 5000 );
System.out.println( "Name: " + name
+ "; sleep: " + sleepTime );
}
public void run() {
try {
System.out.println( name + " going to sleep" );
Thread.sleep( sleepTime );
}
catch ( InterruptedException ie ) {
System.err.println( ie.toString() );
}
System.out.println( name + " done sleeping" );
}
}public class RunnableTester {
public static void main( String args[] ) {
PrintRunnable thread1, thread2, thread3, thread4;
thread1 = new PrintRunnable ( "thread1" );
thread2 = new PrintRunnable ( "thread2" );
thread3 = new PrintRunnable ( "thread3" );
thread4 = new PrintRunnable ( "thread4" );
System.out.println( "\nStarting threads" );
new Thread(thread1).start();
new Thread(thread2).start();
new Thread(thread3).start();
new Thread(thread4).start();
System.out.println( "Threads started\n" );
}
}能够编译,也能够执行。但是我有一个疑问:一般我们编写程序时,如果要用到除Object类外,都要用关键字import来引用这个类或包,但是上面这个程序照样能够运行,不出现错误,按道理说,应该在程序的上面加上:import java.lang.Runnable; 这样的语句才能运行,那么为什么上面的程序我没有加上这样的语句也照样能够编译呢?请求解释
private String name;
private int sleepTime;
public PrintRunnable( String name ) {
this.name = name;
sleepTime = (int) ( Math.random() * 5000 );
System.out.println( "Name: " + name
+ "; sleep: " + sleepTime );
}
public void run() {
try {
System.out.println( name + " going to sleep" );
Thread.sleep( sleepTime );
}
catch ( InterruptedException ie ) {
System.err.println( ie.toString() );
}
System.out.println( name + " done sleeping" );
}
}public class RunnableTester {
public static void main( String args[] ) {
PrintRunnable thread1, thread2, thread3, thread4;
thread1 = new PrintRunnable ( "thread1" );
thread2 = new PrintRunnable ( "thread2" );
thread3 = new PrintRunnable ( "thread3" );
thread4 = new PrintRunnable ( "thread4" );
System.out.println( "\nStarting threads" );
new Thread(thread1).start();
new Thread(thread2).start();
new Thread(thread3).start();
new Thread(thread4).start();
System.out.println( "Threads started\n" );
}
}能够编译,也能够执行。但是我有一个疑问:一般我们编写程序时,如果要用到除Object类外,都要用关键字import来引用这个类或包,但是上面这个程序照样能够运行,不出现错误,按道理说,应该在程序的上面加上:import java.lang.Runnable; 这样的语句才能运行,那么为什么上面的程序我没有加上这样的语句也照样能够编译呢?请求解释
感谢!