** 1. 创建线程两种方式**
- 方式一:继承Thread类
-
- 1.创建一个继承于Thread类的子类
-
- 2.重写Thread类的run()
-
- 3.创建Thread类的子类对象
-
- 4.通过此对象调用start()
- 方式二:实现接口Runna接口
-
- 1.创建一个实现了Runnable接口的类
-
- 2.实现类去实现runnable中的抽象方法:run()
-
- 3.创建实现类的对象
-
- 4.将此对象作为参数传递到Thread类的构造器中,创建Thread类的对象
-
- 5.通过Thread类的对象调用start()
** 2. 对比**
- 5.通过Thread类的对象调用start()
- 开发中优先选择实现Runnable接口的方式
-
①继承Thread类的方式无法实现多继承性
-
②更加适合处理多线程共享数据的情况:
-
因为在接口的实现类中定义的属性在第3步只创建了一个实现类的对象,
-
多线程的创建是在第4步创建Thread类的对象时实现的
3.联系
- Thread类其实也是实现了继承Runnable接口
- 两种方法都需要重写run()方法,将线程要实现的逻辑声明在run()中