这个java程序是如何工作的?
我不理解下面的程序Runnable
是一个接口,任何接口中都不会有构造函数。在这个程序中,new Runnable(){...}
是如何工作的
public class Threads {
public static void main (String[] args) {
new Thread(new Runnable() {
public void run() {
System.out.print("bar");
}}).start();
}
}
# 1 楼答案
下面的代码通过重写run()方法为Runnable接口实现的线程实例化一个匿名内部类。有关内部类的详细信息,请参阅this链接
# 2 楼答案
new Thread()
需要一个可运行的类。所以你用anonymous inner class来实现这一点。下面是做同样事情的更详细的方式:# 3 楼答案
首先,这个程序正在从主方法中实例化一个新线程,将文本打印到控制台
现在,线程类构造函数接受一个实现Runnable接口的类。我们可以通过两种方式向线程构造函数提供一个实例。我们可以使用一个实现Runnable的具体类,或者提供一个匿名的内部类。在这种情况下,你要做的是后者
根据Oracle关于匿名内部类的文档。匿名类使您的代码更加简洁。它们使您能够同时声明和实例化一个类。它们与本地类类似,只是没有名称。如果只需要使用一次本地类,请使用它们
因此,您可以将其视为传递一个Runnable接口类,该接口通过重写run方法并在构造函数参数中定义它来满足约定
# 4 楼答案
它正在此处创建匿名类的实例:
而不是界面可运行