多线程的一道有趣问题

本文详细解析了Java中Thread和Runnable接口的区别与使用,通过示例代码演示了如何创建并启动线程,深入理解Java多线程的运行机制。

class MyThread extends Thread{      public void run(){       System.out.println("MyThread: run()");      }      public void start(){       System.out.println("MyThread: start()");      }     }     class MyRunnable implements Runnable{      public void run(){       System.out.println("MyRunnable: run()");      }      public void start(){       System.out.println("MyRunnable: start()");      }     }           MyThread myThread = new MyThread();     MyRunnable myRunnable = new MyRunnable();     Thread thread = new Thread(myRunnable);     myThread.start();     thread.start();

伤处程序执行结果是什么?

 

答案:

MyThread: start() MyRunnable: run()

分析:

(一)MyThread 继承自 Thread,且覆盖了start()方法,所以当其实例start()时,不会在执行run()方法中的代码。其实这也是个“没用的线程了”。

所以先打印:MyThread: start() 。

(二)MyRunnable 实现了Runnable 接口,Runnable 接口就一个run()方法。

Thread thread = new Thread(myRunnable); 这句代码,根据Runnable 的实例创建了一个Thread实例,该Thread实例的start方法会执行run()方法中的代码。

所以又打印:MyRunnable: run()

 

总结,Runnable 接口,就一个方法 :run() 。本人觉得这个接口仅仅是一种标记而已(类似 Serializable),或者为了以后扩展使用。而真正有意义的是它的实现:Thread。

转载于:https://www.cnblogs.com/heartstage/p/3422429.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值