Thread类
覆盖定义run方法,启动线程必须是start方法
受到Java中单根继承体系的影响,一般不用
Runnable接口
函数式接口
new Thread(new Runnable(){}).start();
run方法不能返回值,不能抛出异常
Callable和Future接口
Callable接口call方法可以有返回值,可以抛出异常
Future接口的实现FutureTask实现类也实现了Runnable接口
new Thread(new FutureTask(new Callable(){})).start();
阻塞等待futureTask.get()