关于线程的困惑

我们可以创建一个接口的引用,但不能创建对象。 但是我们如何将新的Runnable()传递给Thread构造函数。 根据我的知识是Concert,新的Class_Name()是对象。

Thread t = new Thread(new Runnable(){}); 

这里使用的技巧称为匿名类 。 基本上,您正在创建一个实现Runnable的新匿名类的对象。

更好的例子是:

 Thread t = new Thread(new Runnable(){ @Override public void run() { // Code here } }); 

我们可以创建一个接口的引用,但不能创建对象

这不是真的。

 ClassA classa = new ClassA(); 

这将为ClassA创建一个新实例,而classa是引用。

但是我们如何将新的Runnable()传递给Thread构造函数

 Thread t = new Thread(new Runnable(){}); 

这将创建一个Thread的实例,其中t是引用。 新的Runnable(){}被称为匿名类 。 因为创建了一个实例,所以引用会传递给构造函数,但是稍后您不能在代码中引用它。

但是使用这一行你应该得到一个编译错误。 您必须覆盖run方法。

 Thread t = new Thread(new Runnable(){ @Override public void run(){ } });