Advantage of Thread over Runnable
Possible Duplicate:
Java: “implements Runnable” vs. “extends Thread”
号
1)为什么Java语言既提供线程又可运行?2)线程可运行的优点是什么(为什么Java不能提供可运行的)3)我们能不能睡个好觉,给它一个ID等?
- 这看起来像是家庭作业,在互联网上得到了大约10万次的回答。
- @达林:你在文章中提到的所有答案都说明了为什么应该使用runnable以及它提供的优势。我的问题是Java为什么有线程,线程类在可运行接口上的优势是什么?
- 没有线程类,无法启动线程。即使您有一个实现可运行的类,您仍然需要实例化一个线程,或者使用ExecutorService来创建您的线程。
- @布莱恩:这不是家庭作业,我找不到一个满意的答案来解释我的问题。
- @用户892871-尝试Oracle教程。docs.oracle.com/javase/tutorial/essential/concurrency/…下面的段落简洁地解释了这一点。这真的归结为Java不具有多重继承性,因此,在最简单的情况下,您需要使用接口来实现灵活性。
1。线程是一个类,当你说.start()时,你创建一个thread of execution附加到线程类的一个实例。调用runnable的docx1〔2〕方法,使其对thread of execution执行任务,start()方法返回很快。
2。Runnable是分配给newly created thread of execution的task。
三。因此,如果没有线程类,就无法运行可运行的。
1)线程是一个类,包含功能——而runnable是一个接口,因此只是实现类要遵守的"契约"。因为runnable只是一个接口,所以您需要实例化一个线程来包含它。而线程已经包含了生成线程的能力。
2)实现RunnLabess是建议的方式,因为如果扩展线程,则不能扩展任何其他内容(Java不支持多重继承)。一个类上可以有多个接口,因此可以有runnable+许多其他接口,还可以扩展另一个基类。
3)从runnable的实例化中获取线程并使其休眠-this.sleep()。
- + 1。在第2点上,如果扩展线程,可能会无意中破坏线程的核心功能。