转载:http://www.cnblogs.com/rollenholt/archive/2011/08/28/2156357.html
补充:
1、为什么调用start方法而不调用run方法,《java核心思想(卷I)》上面讲到,线程具有6个状态:创建、可运行、等待、阻塞、计时等待和终止状态。当调用start方法是,相当于新建一个线程,这个时候线程处于新建状态,然后操作系统会为这个线程初始一些变量,完成之后,自动调用run方法运行。因此调用start方法有新建线程这个过程。但是如果直接调用run方法的话,根本没有新建线程,而是在当前线程中执行run方法,所以会发现结果跟没有用多线程是一样的。