本帖最后由 linjl_ll 于 2013-11-14 11:48 编辑
首先在启动线程上有一些区别,Thread子类本身就代表线程,所以可以直接调用子类对象的start方法,
Runnable接口的对象它本身不代表一个线程,启动时需要借助一个Thread类启动,Thred t = new Thread(runnable) t.start();
使用线程子类时只能启动一次线程就是只能调用一次start方法,而通过接口的话,可以创建多个thread启动多个runnable的线程。
你可以假设下,如果没有runnable的实现方式,那么线程只能通过thread的子类实现,但我们知道java中只有单继承,所以该类就不能继承其他的类了,这就给程序的扩展性带来了很大的局限性,runnable的出现就解决了这样的问题,现在实现多线程的话一般都是使用runnable接口实现,基本不用thread的子类。 |