1. 继承Thread类的方式进行实现
- 定义一个类MyThread继承Thread类
- 在MyThread类中重写run()方法
- 创建MyThread类的对象
- 启动线程
2.实现Runnable接口
- 定义一个类MyRunnable实现Runnable接口
- 在MyRunnable类中重写run()方法
- 创建MyRunnable类的对象
- 创建Thread类的对象,把MyRunnable对象作为构造方法的参数
- 启动线程
3.实现Callable接口
- 定义一个类MyCallable实现Callable接口
- 在MyCallable类中重写call()方法
- 创建MyCallable类的对象
- 创建Future的实现类FutureTask对象,把MyCallable对象作为构造方法的参数
- 创建Thread类的对象,把FutureTask对象作为构造方法的参数
- 启动线程
- 再调用get方法,获取线程结束之后的结果
三种实现方式的对比
- 实现Runnable、Callable接口
- 好处:扩展性强,实现该接口的同时还可以继承其他的类
- 缺点:编程相对复杂,不能直接使用Thread类中的方法
- 继承Thread类
- 好处:编程比较简单,可以直接使用Thread类中的方法
- 缺点:可以扩展性较差,不能再继承其他的类