zoukankan      html  css  js  c++  java
  • Thread类与Runnable接口

    Runnable

    先看看源码中对Runnable的声明

    @FunctionalInterface
    public interface Runnable {
        /**
         * When an object implementing interface <code>Runnable</code> is used
         * to create a thread, starting the thread causes the object's
         * <code>run</code> method to be called in that separately executing
         * thread.
         * <p>
         * The general contract of the method <code>run</code> is that it may
         * take any action whatsoever.
         *
         * @see     java.lang.Thread#run()
         */
        public abstract void run();
    }
    

    可以看出,Runnable是一个函数式接口,并且里面只有一个抽象方法run(),所以继承Runnable接口必须自己手动实现run()方法。

    Thread

    先看看API中对Thread类的声明

    public class Thread
    extends Object
    implements Runnable
    

    可以看出,Thread类已经帮我们实现了Runnable接口,并且做了实现。这就是为什么继承Thread类不用重写run()方法的原因,因为Thread类已经帮我们对run方法做了实现,源码中的实现如下:

    /**
     * If this thread was constructed using a separate
     * <code>Runnable</code> run object, then that
     * <code>Runnable</code> object's <code>run</code> method is called;
     * otherwise, this method does nothing and returns.
     * <p>
     * Subclasses of <code>Thread</code> should override this method.
     *
     * @see     #start()
     * @see     #stop()
     * @see     #Thread(ThreadGroup, Runnable, String)
     */
    @Override
    public void run() {
        if (target != null) {
            target.run();
        }
    }
    
  • 相关阅读:
    gazebo自建小车备忘
    关于hokuyo的一些参数的备忘
    xenserver加入池报错The servers in this pool are not homogeneous
    exchange管理控制台初始化失败--Kerberos连接失败
    修复windows系统更新失败
    powershell同步时间
    powershell创建密文密码文件
    powershell常用命令
    Graylog客户端及服务端
    powershell,cmd,shell查看帮助
  • 原文地址:https://www.cnblogs.com/zxfei/p/11508604.html
Copyright © 2011-2022 走看看