11.2.3 程序实例

11.2.3 程序实例

下面的例子说明了如何运用Thread类及该类提供的方法来控制线程的执行。如果要设计一个包含线程的程序,一种常用的方法是继承自Thread类,并要在这个类中实现run()方法。run()方法中包含了要运行的线程代码。

【例11-1】设计一个程序ThreadDemo.java继承自Thread类,分别建立ta和tb线程,ta每隔100ms输出“Java”,tb每隔100ms输出“C++”,每个线程执行run()方法10次。程序设计如下:

img455

【程序说明】

程序ThreadDemo.java继承自Thread类,第20,21两行建立两个ThreadDemo类的对象ta和tb,ta对象的字符串为“Java”,暂停时间为100毫秒,tb对象的字符串为“C++”,暂停时间为200毫秒;第22~23行分别启动ta和tb线程,因ta休息100毫秒,而tb休息200毫秒,是ta线程的两倍,因此显示两个“Java”才显示一个“C++”。在MyThread中安装一个计数器count,初值为0,每执行一次run()方法就自动增加1,一直到计数count计数大于或等于10时才跳出run()的while循环,因此ta和tb线程都执行run()10次,总共20次,所以会看到10个“Java”,也看到10个“C++”,在第10个“Java”以前,两个“Java”才会出现一个“C++”,,但第10个“Java”以后,ta线程已结束退出竞争,最后都是“C++”了。

程序运行结果如下:

img456