A第10章Java的线程处 10.14方法的选择 以上例子虽然展示了如何使用 Runnable接口创建 个线程,但是它并不典型。我们说过,使用 Runnable 结构的主要原因是必须从其他父类继承。那么,什么 时候才是使用 Runnable接口的最佳时机呢。给定各种 方法的选择,你如何决定使用哪个?下面分别列出了 选用这两种方法的几个原则
第10章 Java的线程处理 10.1.4 方法的选择 以上例子虽然展示了如何使用Runnable接口创建一 个线程,但是它并不典型。我们说过,使用Runnable 结构的主要原因是必须从其他父类继承。那么,什么 时候才是使用Runnable接口的最佳时机呢。给定各种 方法的选择,你如何决定使用哪个?下面分别列出了 选用这两种方法的几个原则
H 第10章Java的线程处 使用 Runnable的原因: ●从面向对象的角度来看, Thread类是一个虚拟处理 机严格的封裝,因此只有当处理机模型修改或扩展时, 才应该继承类。正因为这个原因和区别一个正在运行 的线程的处理机、代码和数据部分的意义,本教程采 用了这种方法 ●由于Java技术只允许单一继承,所以如果你已经继 承了 Thread,你就不能再继承其他任何类,例如 Applet 在某些情况下,这会使你只能采用实现 Runnable的方 法
第10章 Java的线程处理 使用Runnable的原因: ● 从面向对象的角度来看,Thread类是一个虚拟处理 机严格的封装,因此只有当处理机模型修改或扩展时, 才应该继承类。正因为这个原因和区别一个正在运行 的线程的处理机、代码和数据部分的意义,本教程采 用了这种方法。 ● 由于Java技术只允许单一继承,所以如果你已经继 承了Thread,你就不能再继承其他任何类,例如Applet。 在某些情况下,这会使你只能采用实现Runnable的方 法
6A第10章Jaa的线程处理 ●因为有时你必须实现 Runnable,所以你可能喜欢保 持一致,并总是使用这种方法。继承 Thread的优点: ●当一个run(方法体现在继承 Thread类的类中,用this 指向实际控制运行的 Thread实例。因此代码简单了 些,许多Java编程语言的程序员使用扩展 Thread的机制 注:如果你采用这种方法,在你的代码生命周期 的后期,单继承模型可能会给你带来困难。下面的例 子中分别使用了两种方式创建线程,大家可以分析 下原因,以进一步理解如何使用这两个线程模型
第10章 Java的线程处理 ● 因为有时你必须实现Runnable,所以你可能喜欢保 持一致,并总是使用这种方法。继承Thread的优点: ● 当一个run()方法体现在继承Thread类的类中,用this 指向实际控制运行的Thread实例。因此代码简单了一 些,许多Java编程语言的程序员使用扩展Thread的机制。 注:如果你采用这种方法,在你的代码生命周期 的后期,单继承模型可能会给你带来困难。下面的例 子中分别使用了两种方式创建线程,大家可以分析一 下原因,以进一步理解如何使用这两个线程模型
H 第10章Java的线程处 例10.3 Timer Test java import java. awt. import java. awt event. Import Javax. swing import java. util. x public class Timer Test public static void main( String[ args)
第10章 Java的线程处理 例10.3 TimerTest.java import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.*; public class TimerTest { public static void main(String[] args) {
H 第10章Java的线程处 J Frame f= new Timer Test Framed f showO class Timer Test frame extends jframe public Timer Testframeo setsize(450, 300) setTitle("Timer Test")
第10章 Java的线程处理 JFrame f = new TimerTestFrame(); f.show(); } } class TimerTestFrame extends JFrame { public TimerTestFrame() { setSize(450, 300); setTitle("TimerTest");