zoukankan      html  css  js  c++  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。

  • 相关阅读:
    html语法
    mysql常见的使用语法
    文件相关命令
    linux文件管理
    mysql常见名词解释
    MySQL初识
    文件管理
    并发基础知识3
    Bash shell初识
    【Spring Boot】ActiveMQ 发布/订阅消息模式介绍
  • 原文地址:https://www.cnblogs.com/heartstage/p/3422429.html
Copyright © 2011-2022 走看看