http://blog.chinaunix.net/uid-20665441-id-310538.html
通过学习上文可以知道,Runnable本质上并不是线程,只是一个包装了run()方法的接口,而Thread实现了该接口,并定义了JNI中的native函数start(),使得Thread对象调用start方法时可以以线程的方式运行run()方法。
那么为何不直接使用Thread类而需要利用Runnalbe接口来实现多线程呢?通过原文的例子可以发现,因为直接使用Thread的资源,那么意味着多线程就要new多个Thread对象,就有多个Thread的资源,而每个资源都是相互独立的,无法形成资源共享;而利用Runnable接口,每一个Thread使用的都是同一个Runnable资源,这样就实现了资源共享。