扩展Thread的类不能是其他类的子类(即,如果你的类已经有一个不用于Object的超类,是不能选择扩展Thread的),所以java提供了Runnable接口,而且它被设计为和一个单独的Thread对象一起使用。如果一个对象是一个Runnable对象,则它可以作为一个线程运行。
接口
java.lang.Runnable
目的
这个接口定义了必须被所有线程遵守的协议
方法
void run() 是这个接口的唯一方法
import java.io.*;
public class RuntwoThreads {
public static void main(String[] args)
throws InterruptedException{
Thread one = new Thread(new HelloOne());
one.start();
NumberCruncher nc = new NumberCruncher();
Thread two = new Thread(nc);
two.start();
one.join();
nc.end();
}
}
class HelloOne implements Runnable{
public void run(){
try{
System.out.print("what is your name?");
BufferedReader br =
new BufferedReader(
new InputStreamReader(System.in));
String name = br.readLine();
System.out.println("hello" + name);
}catch(IOException ioe){
System.out.println(ioe.getMessage());
}
}
}
class NumberCruncher implements Runnable{
private static boolean stopflag = false;
public void run(){
try{
int i = 1;
double d = 0;
while(!stopflag){
d = Math.log(i++);
Thread.currentThread().sleep(1);
}
System.out.println(
"The log of " + i + " is " + d);
}catch(InterruptedException ie){
System.out.println(ie.getMessage());
}
}
public void end(){
stopflag = true;
}
}