Java线程:实现runnable如何为线程工作

我知道如果你想要线程,你可以在java中扩展线程或实现runnable到multithreading。 但为什么你必须实现java的接口线程? 什么是可运行的接口的重要性,使java线程工作? Java的界面是否扩展了什么?

关于Runnable接口唯一特别之处在于它是Thread在其构造函数中所采用的。 这只是一个简单的界面。

与大多数接口一样,重点在于您正在编写合同:您同意将要运行的代码放在Runnable#run()实现中,并且Thread同意在另一个线程中运行该代码(当您创建时用它开始一个Thread )。

它是实际“做”multithreading的线程(因为它与本机系统交互)。 Runnable的实现就是您放置要告诉Thread运行的代码的位置。

实际上,您可以实现Runnable并运行它,而无需在单独的线程中运行:

 Runnable someCode = new Runnable() { public void run() { System.out.println("I'm a runnable"); } }; someCode.run(); 

因此Runnable本身与multithreading没有任何关系,它只是在对象中封装代码块时扩展的标准接口。

在function方面,实现Runnable接口或扩展Thread类没有区别。 但是可能存在实现Runnable接口的情况。 想想你的类必须从其他类inheritance而且它应该显示线程function的情况。 由于您的类不能从多个类inheritance(Java不支持它),因此在这种情况下您的类可以实现Runnable接口。

但为什么你必须实现java的接口线程?

您没有,正如您之前所说,您可以扩展Thread对象并实现public void run方法。 如果你想要一个更有条理和更灵活(是的,灵活的)方法,你肯定想要使用Runnable一个明显的原因:代码可重用性。

当我说有组织时,我想说维持一个很容易

 Runnable doSomething = new Runnable() { @Override public void run() { goAndDoSomethingReallyHeavyWork(); } }; 

然后为另一个线程重用相同的runnable,或者在另一个时刻使用相同的线程(是的,你实际上可以重用一个Thread),而不是将2个或更多个线程扩展到你将使用一次的对象中。

什么是可运行的接口的重要性,使java线程工作?

重要的是Thread对象将“知道”Runnable有一个方法运行,并在必要时执行它(因此停止,暂停和其他Thread操作)。

Java的界面是否扩展了什么?

这个问题值得我给你+1。 我真的很想知道,但它似乎是语言的一个特性,而不是像扩展Object超类的所有其他对象一样的自身产品。

我希望它有所帮助。 干杯