在这个小代码中,Runnable不是实例化的。为什么?

时间:2018-01-11 09:40:16

标签: java

// Runnable cannot instantiate
public class Thread4 {
    public static void main(String[] args) {
        Thread t1 = new Thread(new Runnable());
    }
}
  

//Runnable cannot instantiate

为什么呢?虽然在另一个程序中,它使用相同的代码进行实例化。

2 个答案:

答案 0 :(得分:2)

Runnable是一个接口,而不是一个类。为了实例化它,您必须提供一个实现接口的类(如果您使用的是Java 8或更高版本,则必须提供lambda表达式或方法引用)。

例如:

Thread t1 = new Thread(new Runnable() {public void run() {}});

这里我定义了一个实现Runnable并创建该类实例的匿名类。

答案 1 :(得分:2)

直接您无法在新的主题()中传递新的Runnable()。您需要创建一个实现的类(例如:MyTestRunnable.java),它实现Runnable Interface并在新的Thread()中传递 new MyTestRunnable()

public class MyTestRunnable implements Runnable {
    public void run(){
       System.out.println(" .... ");
    }
  }


public class Thread4 {
    public static void main(String[] args) {
       Thread t1 = new Thread(new MyTestRunnable());
    }
}