1.Java的线程模型也是面向对象的。Java通过Thread类将线程所必须的功能都封装了起来。要想建立一个线程,必须要有一个线程执行函数,这个线程执行函数对应Thread类的run方法。Thread类还有一个start方法,这个方法负责建立线程。
2.在Java的线程模型中除了Thread类,还有一个标识某个Java类是否可作为线程类的接口Runnable,这个接口只有一个抽象方法run,也就是Java线程模型的线程执行函数。
因此,一个线程类的唯一标准就是这个类是否实现了Runnable接口的run方法,也就是说,拥有线程执行函数的类就是线程类。两种方式从本质来说都是创建Thread类来建立线程的。
之所以有Runable的方式,是因为java只能单继承,如果自定义类必须扩展其他的类,则可以通过接口去实现,还有一点很重要就是Runable创建的线程,是共享资源的,而继承的方式每个线程都拥有自己独立的资源。