查看Runable接口类的帮助文档,可以发现接口自由一个run方法。那么如何通过实现接口Runable来创建多线程应用呢?
public class PrintThread implements Runnable {
private String name; //打印机名字
public PrintThread() { //无参构造函数
}
public PrintThread(String name) { //带参构造函数
super();
this.name = name;
}
public void run() { //实现run()方法
print();
}
public void print() { //编写关于打印机的业务方法
System.out.println(name + "开始打印");
try {
Thread.sleep(45);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(name + "结束打印");
}
}
那么如何创建PrintThread类的对象呢?创建一个测试TestThread类,具体内容如下
public class TestThread {
public static void main(String[] args) {
//创建四个线程
PrintThread pNT1 = new PrintThread("打印机1");
//Thread pNT2=new PrintThread("打印机2");
Thread pNT3 = new Thread(new PrintThread("打印机3"));
Thread pNT4 = new Thread(new PrintThread("打印机4"));
//启动线程
// pNT1.start();
// pNT2.start();
pNT3.start();
pNT4.start();
}
}
代码解析
在上述代码中,pNT1对象创建成功,当时不能成功调用start()方法。这是因为Runable接口中只有run方法,而没有start方法。
pNT2对象不能成功创建,这是因为Thread类实现Runable接口,PrintThread类也实现Runable接口,即这两个类没有父子关系,所以不能创建成功。
pNT3和pNT4对象能够创建成功,也能够调用start()方法启动线程,所以实现润able接口的对象只能通过Thread(Runable target)构造函数来创建线程。