http://docs.oracle.com/javase/tutorial/essential/concurrency/runthread.html
定义和启动一个线程
创建线程实例的应用程序必须实现run方法,这里有2种方式:
实现 Runnable 接口:
继承 Thread 类:
注意到,上面的2个例子都调用了Thread.start()方法,为了启动一个新的线程。
这两种习惯用法你应该选择使用哪个?前一个使用Runnable,更加通用,因为可以继承除了Thread的其他类,Java只能单继承。第二种,更适合简单应用,事实限制了你的任务类必须是Thread的子类。这篇内容集中在前一个处理方式,它使Runnable任务与执行该任务的Thread分离。这个方法不仅更加灵活,而且,可以应用到高级线程管理API,以后会谈到。
Thread类定义了大量的方法,可用于线程管理;包括静态方法--提供调用该方法的线程的信息,或者影响调用该方法的线程的状态。其他的方法被其他线程调用--管理该线程和线程对象。我们将仔细考察这些方法在后面的章节。