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。

  • 相关阅读:
    CSZ CMS 1.2.7 xss分析与复现
    蚁剑改造过WAF系列(一)
    代理池
    二维码劫持案例分析
    入门KKCMS代码审计
    Xposed+XServer无需脱壳抓取加密包
    通达OA前台任意用户登录分析
    ATutor学习内容管理系统任意文件上传漏洞(CVE-2019-12169)分析
    调试System.AggregateException-即使在异步代码中也是如此
    关于System.Exception
  • 原文地址:https://www.cnblogs.com/heartstage/p/3422429.html
Copyright © 2011-2022 走看看