Thread 类结构:
public class Thread implements Runnable
Thread 类实现了 Runnable 接口,它们之间具有多态关系
实际中,使用 Thread 类的方式实现多线程,最大的局限就是不支持多继承,因为 Java 语言的特点就是单继承,所以为了支持多继承,完
全可以实现 Runnable 接口的方式,一边实现一边继承。但用这两种方式创建的线程在工作时的性质是一样的,没有本质的区别。
代码实现:
class T extends Thread {
private Integer i = null;
public T(Integer i) {
this.i = i;
}
public void run() {
for (;;) {// for( ; ; )这是一个死循环
System.out.println(i++);
}
}
}
public class MyThread{
public static void main(String[] args) {
Integer i = 0;
T t1 = new T(i);
T t2 = new T(i);
t1.start();
t2.start();
}
}
Runnable 接口:
如果要创建的线程类已经有一个父类,这时就不能再继承 Thread 类,因为 Java 不支持多继承,所以需要实现 Runnable 接口来应对这样的情况。
public class thread extends Object implements Runnable
run() 方法正是对 Runnable 接口中 run() 方法的具体实现。使用 Runnable 接口启动线程的基本步骤如下:
- 创建一个 Runnable 对象。
- 使用参数带 Runnable 对象的构造方法创建 Thread 实例。
- 调用 start() 方法启动线程。
通过实现 Runnable 接口创建线程时开发人员首先需要编写一个实现 Runnable 接口的类,然后实例化该类的对象,这样就创建了 Runnable 对象。接下来使用相应的构造方法创建 Thread 实例。最后使用该实例调用 Thread 类的 start() 方法启动线程。
如图所示(来源于网络,侵删):
代码实现:
class T1 implements Runnable {
private Integer i = null;
public T1(Integer i) {
this.i = i;
}
public void run() {//run分时线程
for (; ; ) {//for( ; ; )这是一个死循环
System.out.println (i++);
}
}//这就是一个执行线程
}
public class 线程示例2 {
//main是主线程
public static void main(String[] args) {
Integer i = 0;
T1 t = new T1 (i);
T1 t1 = new T1 (i);
Thread tt = new Thread (t);
tt.start ();
Thread tt1 = new Thread (t1);
tt1.start ();
}
}
在主线程中编写代码,创建一个Runnable 实例,并将该实例作为参数传递给 Thread 类的构造方法,最后调用 Thread 类的 start() 方法启动线程。
参考资料:Java多线程的实现方式