继承thread类创建线程和实现runable接创建线程的区别

继承thread类创建线程和实现runable接创建线程的区别?应用场景。
四种创建方式的区别。

从代码的角度来说,实现Runnable接口比继承Thread,多了一个步骤,把要干的事塞进了一线程里(可以这么理解)
但是java是一种单继承语言,用Runnable接口就摆脱了这种缺陷,并且,对于同一个资源的消耗来说,要用Runnable接口,继承Thread类无法处理对相同资源处理的情况,即Runnable的代码,可以被多个线程(Thread实例)共享
例如多个售票窗口售票: