在Java中要想实现多线程代码有两种方法,一种是继承 Thread 类,另一种就是实现 Runnable 接口
一、继承 Thread 类
Thread 类是在 java.lang 包中定义的,一个类只要继承了 Thread 类,此类就称为多线程操作类。
在 Thread 子类中,必须明确地覆写 Thread 类中的 run() 方法,此方法为线程的主体
例子:继承Thread类实现多线程
class MyThread extends Thread { //继承Thread类
private String name;
public MyThread(String name) {
this.name = name;
}
public void run() { //覆写Thread类中的run 方法
for(int i=0;i<5;i++){
System.out.println(name + " 运行:i = " + i);
}
}
}
public class ThreadDemo {
public static void main(String[] args) {
MyThread mt1 = new MyThread("线程A");
MyThread mt2 = new MyThread("线程B");
mt1.run();
mt2.run();
}
}
程序运行结果
线程A 运行:i = 0
线程A 运行:i = 1
线程A 运行:i = 2
线程A 运行:i = 3
线程A 运行:i = 4
线程B 运行:i = 0
线程B 运行:i = 1
线程B 运行:i = 2
线程B 运行:i = 3
线程B 运行:i = 4
发现以上的程序是先执行完mt1对象之后再执行mt2对象,并没有交错运行,也就是说,此时线程实际上并没有被启动,
还是属于顺序式的执行方式,那么该如何启动线程呢?如果要正确地启动线程,是不能直接调用run()方法的,而应该
是调用从 Thread 类中继承而来的 start() 方法,具体代码如下