如图所示:
继承Thread类与实现Runnable接口:分析
1. 开启线程的方法不一致;
- 继承Thread()类
子类对象.start()方法
- 实现runnable()接口
传入目标对象(Thread对象).start()方法
2. Thread是extend Thread,而实现runnable接口是implements Runnable;
3. Thread内部实现了Runnable接口;
两者优势
1. 不建议使用继承Thread类,有OOP单继承局限性;
2. 推荐使用实现Runnable接口,方便同一个对象被多个线程使用;
分析:
如果使用实现Runnable接口,那么线程池中常量可以共享,并实现多线程业务处理,可以多个线程同时处理一个业务;
如下图所示,继承Thread类,直接创建两个线程会报错,也就是OOP的单继承局限性(此对象不能够操作两次)
发现问题,多个线程操作同一个资源的情况下,线程不安全,数据紊乱,如下图所示
解决:并发问题解决