您的位置:首页 > 职场人生

一道关于java线程的面试题

2009-08-27 15:25 295 查看
一道关于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。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: