Java 两种创建线程方式的区别
·
一、两种实现方式
- 继承 Thread 子类 自定义类继承
Thread,重写run()方法,直接 new 子类调用start()启动线程。
java
运行
class MyThread extends Thread{
@Override
public void run(){}
}
- 实现 Runnable 接口 自定义类实现
Runnable接口,实现run(),把实例传入Thread构造器创建线程。
java
运行
class MyTask implements Runnable{
@Override
public void run(){}
}
new Thread(new MyTask()).start();
二、核心区别
-
继承限制 Java 只支持单继承。继承
Thread后,该类不能再继承其他父类;而实现Runnable不受影响,类还可以继承别的父类,扩展性更强。 -
数据共享 继承 Thread:每 new 一个子类都是独立对象,成员变量相互隔离,多线程很难共享数据。 实现 Runnable:多个
Thread可以共用同一个 Runnable 任务对象,轻松实现成员变量共享,适合多线程并发操作同一资源(如售票案例)。 -
代码解耦 继承 Thread 把线程载体和业务任务耦合在一起;Runnable 只负责业务逻辑,线程由 Thread 管理,任务和线程分离,更符合面向对象设计,也适配线程池。
三、总结
日常开发优先选择实现 Runnable 接口,规避单继承限制,方便多线程共享资源,代码更灵活。
更多推荐
所有评论(0)