学习java语言,线程与多线程系列是少不了的学习内容,关于线程的基本内容在前面都有介绍学习过,今天来学习一个新的内容——Thread类的子类。Thread类的子类是线程的启动方法之一,另一个启动线程的方法是利用 Runnable 接口的实现类的实例,在后面的文章再做总结,下面来具体说明线程启动方法之Thread类的子类的内容。
利用Thread类的子类实例来启动线程:
PrintThread(代码1)是表示连续输出10000次指定字符串的线程。欲输出的字符串以构造器的参数指定,存储在message字段PrintThread 则声明为Thread类的子类。
代码1表示连续输出10000次指定字符串的线程的PrintThread PrintThread .java),如下:
public class PrintThread extends Thread {
private String message;
public PrintThread(String message) {
this.message = message;
}
public void run () {
for (int i = 0; i < 10000; i++) {
System.out.print(message);
}
}
}
下面这个程序则是先建立2个上面己声明的PrintThread类的实例,再利用它们来启动2个线程:
public class Main {
public static void main(String[] args) {
new PrintThread (”Good !”) .start();
new PrintThread (”Nice !”) .start();
}
}
在main方法里,则建立PrintThread 类的实例后,立刻调用该实例的start方法(没有代入到变量的操作) 也就是:
new PrintThread (”Good !”) .start();
这是先建立PrintThread类的实例,将该实例的start方法调用出来的语句。
调用出start方法后,就会启动新的线程,然后,这个线程再调用 PrintThread类的实例的run方法,最后就变成是新启动的线程去进行连续输出 10000次“ Good!”的工作
为了让程序更简洁,所以上面只用1个语句启动线程。不过,请注意:“建立PrintThread类的实例”和“启动该实例所对应的线程”是两个完全不同的处理,即使己经建立了实例,仍然必须等到调用start方法才会启动线程。上面的语句也可以写成2个,即:
Thread t = new PrintThread (”Good !”);
t.start();
需要强调的是“ PrintThread 的实例”和“线程本身”是两个不同的部分
即使建立了PrintThread的实例,也还没有启动线程,而且就算线程己经结束,PrintThread 的实例也不会就这样消失不见。
主线程在Main类的main方法里启动2个线程,因为main方法会立即结束,所以主线程也会立即结束,不过整个程序还没有结束。别忘了,在字符串输出结束之前,已经启动的2个线程都还活着。一直要等到所有线程都己经结束,程序才会结束,当所有线程都结束,这个程序才会正式结束。
建立Thread类的子类、建立其实例、调用start方法……这是利用Thread
的子类以启动线程的方法。
通过实例介绍了利用Thread类的子类来启动线程,相信经过上面的讲解,大家学会了这个启动线程的方法,希望大家可以在自己的电脑上操作一遍,完全掌握利用Thread类的子类来启动线程这个技能。
HelloWorld10-31 08:24
军哥08-12 23:29
江湖人称小李白12-10 10:41
IT逐梦者08-17 21:43
HelloWorld11-06 11:19