新增第一种:实现Callable接口
/*
创建线程的方式三:实现Callable接口。---JDK5.0新增
如何理解Callable接口比Runnable接口功能强大?
1.call()方法有返回值
2.call()方法可以抛出异常
3.Callable支持泛型
*/
public class Thread3 {
public static void main(String[] args) {
//3.创建Callable接口实现类的对象
NumThread numThread = new NumThread();
//4.将此Callable接口实现类的对象作为参数传递到FutureTask构造器中,创建FutureTask的对象
FutureTask futureTask = new FutureTask(numThread);
//5.将FutureTask的对象作为参数传递到Thread构造器中,创建Thread对象,并调用start()。
new Thread(futureTask).start();