1.Runnable与静态代理的联系
前面《多线程03--静态代理模式》,我们通过一个简单的例子,然后外加配图,相信已经能够比较清楚的理解静态代理模式是个什么玩意儿,以及如何实现它。那么回到通过实现Runnable创建线程这个事儿上来,我们再列下整个实现步骤:
新建线程类MRunnableThread,继承Runnable接口,在其中实现run()方法完成具体的业务操作动作
new一个MRunnableThread的实例mRunnable,调用new Thread(mRunnable).start()启动线程
上面的步骤2中的new Thread(mRunnable).start(),是不是和下面的这行代码有异曲同工之妙:
实际上,两者本质也确实一样,底层都使用了静态代理模式。
看new Thread的构造方法:
init方法主要做的事情就是初始化线程,方法体内部做的其中一个事情就是为target赋值:
那么这个target是哪儿来的呢,接着看:
target实际就是Runable的一个实例对象,上面的注释也比较有意思:What will be run(谁将会被执行)
我们再看一下,Thread的start方法: