多线程的四种实现方式
继承 Thread 类实现多线程
- 创建一个类,并继承
Thread
类 - 重写
Thread
类中的run()
方法(业务代码) - 实例化创建好的线程类
- 调用实例化对象的
start()
方法启动线程
public class ThreadDemo {
public static void main(String[] args){
// 3、实例化创建好的线程类
Thread t = new DemoThread();
// 4、调用实例化对象的 start() 方法启动线程
t.start();
System.out.println("运行了 main() 方法");
}
}
// 1、创建一个类,并继承 Thread 类
class DemoThread extends Thread {
// 2、重写 Thread 类中的 run() 方法
@Override
public void run() {
System.out.println("运行了 run() 方法");
}
}
注:启动线程时,不能直接调用
run()
方法
原因:
1、使用start()
方法,重复启动线程会抛出RunTimeException
2、使用start()
方法,调用start0()
方法,JVM根据不同操作系统实现,通过系统底层函数,实现不同系统的多线程启动
基于 Runnable 接口实现多线程
继承有单继承的限制,故Java提供第二种多线程的主体定义结构形式,即,实现
Runnable
接口
- 创建一个类,并实现
Runnable
接口 - 重写
Runnable
接口中的run()
方法(业务代码) - 实例化创建好的线程类
- 通过
Thread
类的start()
方法启动线程
public class RunnableDemo {
public static void main(String[] args){
// 3、实例化创建好的线程类,并通过 Thread