zoukankan      html  css  js  c++  java
  • 多线程-Thread与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是个只有一个方法的接口。 
    Thread:

    public
    class Thread implements Runnable {
        /* What will be run. */
        private Runnable target;
        /**
         * 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();
            }
        }
    }
    

    Thread实现了Runnable接口,而且还组合了一个Runnable,可以看出,实现的方法内部是调用组合类的方法,这其实就是装饰模式。

  • 相关阅读:
    day08作业
    Python进制之间的转换
    day07作业
    Python之深浅拷贝详解
    day06作业
    Python流程控制-循环语句for、while
    Python条件语句-if
    Python变量类型之可变/不可变类型
    Cross platform
    Windows version PE System Key
  • 原文地址:https://www.cnblogs.com/lujiango/p/7581008.html
Copyright © 2011-2022 走看看