继承 Thread 类
Thread 类本质上是实现了 Runnable 接口的一个实例,代表一个线程的实例。启动线 程的唯一方法就是通过 Thread 类的 start()实例方法。start()方法是一个 native 方 法,它将启动一个新线程,并执行 run()方法。
实现 Runnable 接口
如果自己的类已经 extends 另一个类,就无法直接 extends Thread,此时,可以实现 一个 Runnable 接口。
实现 Callable 接口
Callabled 接口有点儿像是 Runnable 接口的增强版,它以 call()方法作为线程执行体, call()方法比 run()方法功能更强大。
call()方法可以有返回值,可以声明抛出异常类。
获取 call()方法里的返回值: 通过 FutureTask 类(实现 Future 接口)的实例对象的 get()方法得到,得到结果类型与创建 TutureTask 类给的泛型一致。
**具体代码实现**
1.定义实现 Callable 接口的实现类,并实现 call()方法。注意:Callable 有泛型限 制,与返回值类型一致。这里是 Integer public class ThirdThread implements Callable<Integer>{//重写 call()方法}
2.再创建 Callable 实现类的实例 tt。 ThirdThread tt = new ThirdThread();
3.使用 FutureTask 类包装 Callable 的实例 tt。 FutureTask<Integer> tas= new FutureTask<Integer>(tt);//注意:泛型限制与返 回结果一致。
4.以 FutureTask 对象(task)作为 Thread 的 target 来创建线程,并启动。 new Thread(task, "线程").start();
5.调用 FutureTask 对象(task)的 get()方法获得返回值 Integer result = task.get();//会有异常