java里接口不是一个只有方法名没有方法体的空壳吗?那为什么实现了Runnable接口的类就有了多线程功能呢?
展开全部
你可以比较一下创建线程的两个方法,继承Thread类和实现Runnable接口:
① class A extends Thread {public void run() {}}
main() {new A().start();}
② class A implements Runnable {public void run() {}}
main() {new Thread(new A()).start();}
注意看②里面的new Thread,你者雹说的对,单独A实现了Runnable是没有多线程的功能的,必须new Thread创建线程,然后将A的实例作为参数产给它,这样和Thread合起来才实现了线程的功能。
这两种方念嫌好法是面向对象的两种设计思想的体现,即继承和组合,①是继承,将Thread继承过来,加上A自己的东西(run方法)构成完整的线程,②是仔铅组合,将Thread和A组合起来,构成线程。面向对象的原则是:尽量用组合替代继承,所以推荐第二种方法。
① class A extends Thread {public void run() {}}
main() {new A().start();}
② class A implements Runnable {public void run() {}}
main() {new Thread(new A()).start();}
注意看②里面的new Thread,你者雹说的对,单独A实现了Runnable是没有多线程的功能的,必须new Thread创建线程,然后将A的实例作为参数产给它,这样和Thread合起来才实现了线程的功能。
这两种方念嫌好法是面向对象的两种设计思想的体现,即继承和组合,①是继承,将Thread继承过来,加上A自己的东西(run方法)构成完整的线程,②是仔铅组合,将Thread和A组合起来,构成线程。面向对象的原则是:尽量用组合替代继承,所以推荐第二种方法。
展开全部
若一个非抽象类实现一个接口,就必须重写接口中所有的方法,游念所以你实现Runnable接口时,会重写run()方法,run()方法扮磨逗只是把该线程编程可就绪状态,start()方法是将该线程变为可厅卖运行状态,好好理解下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
实现Runnable接口的类中要重写run()方法的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询