1. 问题
- 为什么常用实现 Runnable 接口的方法创建线程?
2. 解答
a. 可行性分析
- 不考虑线程池问题时,在 Java 中可以通过继承 Thread 或调用 Runnable 接口来实现线程;
b. 实现 Runnable 的优势
- 相比继承 Thread,实现 Runnable 有以下优势:
- 适合多个相同的程序代码的线程去共享同一个资源,如果一个类继承 Thread,则不适合资源共享;但是如果实现了 Runnable 接口的话,则很容易的实现资源共享;
- 可以避免 Java 中的单继承的局限性,因为 Java 不支持类的多重继承,但允许调用多个接口,所以如果要继承其他类,应该调用 Runnable 接口来实现线程;
- 增加程序的健壮性,实现解耦操作,代码可以被多个线程共享,代码和线程独立,而继承方式中线程和任务是耦合的;
- 线程池只能放入实现 Runnable 或 Callable 类线程,不能直接放入继承 Thread 的类。