线程是进程中的一个独立控制单元,线程在控制着进程的执行,多线程可以更好地利用cpu的资源,在线程之间还能进行数据共享,线程是java语言中不可或缺的一部分。前面的文章中介绍了线程的启动方法之一:利用Thread类的子类实现,今天来讲讲另一个启动线程的方法——利用Runnable接口的相关知识,在学习线程的java爱好者们一起看下去吧。
利用实现了 Runnable 接口的类的实例以启动线程的方法。Runnable接口是 java.lang Package 里的接口,声明方法如下:
Public interface Runnable{
Public abstract roid run ();
}
己实现Runnable接口的类必须实现run方法。(Runnable接口虽然己经实现,但仍可声明未实现run方法的类,不过这个类会变成抽象类)
Printer类(代码1)是表示一个连续输出10000次指定字符串的线程,欲输出的字符串以构造器的参数指定,存储在message字段Print类则声明为己实现(implements)了Runnable接口的类。此时,不必再将Printer类设为Thread 的子类。
代码1:
public class Printer implemes Runnable
private String message;
public Printer(String message) {
this.message=message;
}
public void run() {
for (int i = 0; i < 10000; i++) {
System.out.print(message)
}
}
}
Main(代码2)这个程序则是先建立Printer类的实例,再利用它们来启动2个线程
public class Main {
public static void main (String[) args) {
new Thread(new Printer (”Good !”) ) .start ();
new Thread(new Printer (”Nice !”) ) .start ();
}
}
在代码2里,建立Thread类的实例时,就输出Printer类的实例作为构造器的参数。然后才利用start方法启动线程。也就是:
new Thread(new Printer (”Good !”) ) . start() ;
这里是先重新建立Printer类的实例,把它传出去作为参数后,再建立Thread
类的实例,将该实例的start方法调用出来的语句
调用出start方法后,就会启动新的线程,然后,这个线程再调用Printer类的实例的run方法,最后就变成是新启动的线程去进行连续输出10000次“ Good !”的工作。上面的语句也可以写成3个,即:
Runnable r ηew Printer (“Good !”);
Thread t = new Thread(r);
t.start();
建立一个实现了Runnable接口的类,将该实例传给Thread的构造器,调用 start方法……,这就是利用Runnable接口来启动线程的方法。
以上就是利用Runnable接口实现线程接口的方法二的学习内容,无论是利用Thread类的子类的方法,还是利用实现了Runnable接口的类的方法也好,用来启动新线程的方法永远是Thread类的start方法。希望大家可以通过这篇文章的介绍及讲解,掌握用Runnable接口启动线程的技能。
HelloWorld10-31 08:24
军哥08-12 23:29
江湖人称小李白12-10 10:41
IT逐梦者08-17 21:43
HelloWorld11-06 11:19