实现Runnable接口的类的对象直接调用run与将该对象传入Thread构造调用run有什么区别

实现Runnable接口的类的对象直接调用run
与将对象传入Thread调用run有什么区别
1.

DemoRunnable dr = new DemoRunnable();
new Thread(dr).run();

2.

new DemoRunnable().run();

没区别,就一个普通方法,Thread.start才会申请系统资源

当一个类继承Thread类,可以看作一个具有逻辑的Thread类,代码重用性高,
但是java只能继承一个类
当一个类实现Runnale接口,这个类可以看作有一定多线程附加功能的普通类,
可以继承其他类,更灵活,实际工作主要使用Runnable

主要区别在Rumnable, Thread实现方法, Runnable便于共享数据,解决继承类不能实现线程的问题,内部的run方法运行没什么区别。

Thread是一个线程完成一个任务,任务和任务之间没有联系
Runnable是可以,一个任务被多个线程来完成,比如卖电影票,一共100张票,由三个窗口来卖