文章目录
oracle官方文档创建线程的方式
- oracle官方文档创建线程的方式
- 代码示例
- 实现Runnable接口方式创建线程
- 继承Thread类 方式创建线程
- 两种实现多线程方式的对比
- 两种实现多线程方式的本质
根据oracle的官方文档如下, 创建线程的方式只有两种.
- 实现Runnable接口
- 继承Thread类
public class RunnableStyle implements Runnable {
public static void main(String[] args) {
Thread thread = new Thread(new RunnableStyle());
thread.start();
System.out.println(Thread.currentThread().getName()+ " main线程打印");
}
@Override
public void run() {
System.out.println(Thread.currentThread().getName()+ " 实现Runnable接口创建线程");
}
}
控制台打印如下
package com.thread.createthread;
/**
* 类名称:ThreadStyle
* 类描述:TODO
*
* @author: https://javaweixin6.blog.csdn.net/
* 创建时间:2020/8/15 20:05
* Version 1.0
*/
public class ThreadStyle extends Thread {
@Override
public void run() {
System.out.println(Thread.currentThread().getName()+ " 继承thread类 创建线程");
}
public static void main(String[] args) {
new ThreadStyle().start();
System.out.println(Thread.currentThread().getName()+ " main线程打印");
}
}
控制台打印如下
- 从解除耦合的角度, 实现Runnable接口方式创建线程更好
- 如果用继承Thread类 方式创建线程 , 每次想要新创建一个任务, 只能新建立一个线程, 而新创建一个线程的损耗是比较大的. 而用Runnable , 可以使用线程池的方式来创建线程, 减少了线程创建和销毁的损耗. 节约了资源
- 由于Java是支持多实现, 而只支持单一继承的, 因此使用实现Runnable接口的方式也更好 .
- 实现Runnable接口方式 最终是调用target.run();
而target 就是Runnable 接口
使用实现Runnable 接口 创建线程的方式,是会在构造方法的时候传入, 在后续的过程中被初始化. 如下图的Thread源码所示
- 继承Thread类 方式是整个run()被重写 方法二是直接子类重写了父类的方法, 一旦子类重写了父类的方法, 那么父类的run方法就会被抛弃掉.