3-1实现多线程的方式到底有几种?
2020-07-05 本文已影响0人
西西_20f6
一、RunnableStyle
public class RunnableStyle implements Runnable{
@Override
public void run() {
System.out.println("用 Runnable 方法实现线程");
}
public static void main(String[] args) {
Thread thread = new Thread(new RunnableStyle());
thread.start();
}
}
二、ThreadStyle
public class ThreadStyle extends Thread {
@Override
public void run() {
System.out.println("用 Thread 方法实现线程");
}
public static void main(String[] args) {
Thread thread = new ThreadStyle();
thread.start();
}
}
三、用 Thread 方式实现线程的缺点:
- 1,从解耦的角度
- 在设计上,任务(Runnable)和运行任务的类(Thread)应该是解耦的比较好
- 如果采用继承的方式,就没有做到解耦
- 2,从节约资源的角度
- 任务无法在多个线程间共享,每次为了新建一个任务还得新建一个线程,
- 新建一个线程的开销还是比较大的,它需要去创建、执行、执行完了又要销毁。
- 如果我们使用Runnable就可以使用线程池等工具,用这些工具就可以大大减少
- 创建线程,销毁线程带来的损耗。
- 3,由于java只支持单继承,一旦某个类继承了Thread就无法继承其他类了。
- 限制了它的扩展性
四、两种方法本质对比
RunnableStyle:Thread最终调用target.run()
ThreadStyle: run()整个都被重写