4

可能重复:
Java:“实现可运行”与“扩展线程”

1)为什么Java语言同时提供Thread和Runnable?2) 线程相对于可运行的优势是什么(为什么 Java 不能只提供可运行的) 3) 我们可以进行可运行的睡眠,给它一个 id 等吗?

4

2 回答 2

11

1.线程是一个类,当你说.start()你创建一个thread of execution 附加到线程类的实例时。调用 Runnable的run()方法,使其在上执行任务 thread of execution,该start()方法快速返回。

2. Runnabletask指派给的newly created thread of execution

3.所以没有Thread类,你就不能运行你的Runnable。

于 2012-08-18T17:41:20.530 回答
4

1) Thread 是一个类并且包含功能 - 而 runnable 是一个接口,因此只是实现类要遵守的“合同”。由于 Runnable 只是一个接口,您需要实例化一个线程来包含它。而线程已经包含产生线程的能力。

2) 实现 Runnable 是建议的方式,因为如果你扩展 Thread 你不能扩展其他任何东西(Java 不支持多重继承)。您可以在一个类上有多个接口,因此您可以拥有 Runnable + 许多其他接口,还可以扩展另一个基类

3)您从 Runnable 的实例化中获取线程并使其休眠 - this.sleep()

于 2012-08-18T17:42:38.937 回答