创建线程的方法
1.Thread
2.Runnable+Thread 无返回值
实际上Thread有一个静态内部类Holder,
它有一个Runnable字段成员target,
Thread.start()调用的是target的run方法
而这个target由传递进来的runnable赋值
3.FutureTask+Callable+Thread 有返回值
FutureTask 接收<interface>callable
implements Runnable
Thread(<interface>Runable)
上下文切换
那么重新拿到的时候就要提供执行的偏移量—>程序计数器(记录下一条指令的地址提供给cpu)