学习笔记2-两种创建线程方式的对比
创建线程两种方式:
1.通过继承Thread类
2.通过实现Runnable接口
下面对于这两种方法做比较:
相同点:
都需要重写run(),将待实现的逻辑写在run()方法中
联系:
看Thread类的源码可以发现:
public class Thread implements Runnable
实际上Thread类也实现了Runnable接口,也就是说:Thread类当中的run()也是重写Runnable接口的,继承Thread类并重写run()方法与直接实现Runnable接口在本质上并没有区别。
在实际开发当中,一半选择“通过实现Runnable接口来创建线程”:
原因有两个:
1.Java是单继承制的,当一个类为了实现进程继承了Thread类之后,就无法再继承其他的类,通过实现Runnable接口可以避免这样的问题。因为接口是可以同时实现多个的。
2.通过实现Runnable接口的方式更加适合处理多个线程共享数据的情况。例如要在三个窗口售出100张票,三个窗口共享这100张票,用实现的方式创建线程,则创建一个卖票的对象实例传入三个Thread当中即可实现数据的共享和同步,更加方便。