Java 创建线程时,我们在构造函数中传递的参数包含(这)为什么使用它?
我是编程新手。创建线程时,为什么要将(此)作为参数传递Java 创建线程时,我们在构造函数中传递的参数包含(这)为什么使用它?,java,multithreading,Java,Multithreading,我是编程新手。创建线程时,为什么要将(此)作为参数传递 private Thread filePuller=null; filePuller=新螺纹(此“filePuller”); 查看类实现的接口。 它应该可以运行。 所以您将这个(引用类的对象)作为“任务”传递给线程以执行。 您的类重写方法 public void run(){ ... } 这将被执行。这里发生的事情是显式地实例化线程类,并将当前类的实例传递给新线程。有关详细信息,请参阅以获取有关该构造函数的详细信息。您当前的对象是的实例
private Thread filePuller=null;
filePuller=新螺纹(此“filePuller”);
查看类实现的接口。
它应该可以运行。
所以您将这个(引用类的对象)作为“任务”传递给线程以执行。
您的类重写方法
public void run(){
...
}
这将被执行。这里发生的事情是显式地实例化
线程
类,并将当前类的实例传递给新线程。有关详细信息,请参阅以获取有关该构造函数的详细信息。您当前的对象是的实例(您应该能够通过签出类开始的代码来检查)。因此,在代码的后面,当调用filePuller.start()
时,它将调用当前类的run()
方法。您应该能够在当前类中的某个地方看到run()
方法的实现,无论是在同一文件中还是在超类的代码中。希望有帮助。这是一个设计选择。Thread
类带有许多重载构造函数。
在这里你可以使用这个:
公共线程(可运行目标,字符串名称)
分配一个新的线程对象。此构造函数与
线程(空、目标、名称)
参数:
target
–此线程运行时调用其run方法的对象
起动。如果为null,则调用此线程的run方法
name
–新线程的名称
因此,代码中的this
引用了一个Runnable
实例,线程启动时会调用该实例的run()
方法
如果类实现了
Runnable
,并且出于某种原因不想扩展Thread
,例如该类已经扩展了另一个类,或者我们不想在类定义中泄漏Thread
实现,则此代码是有意义的。我们需要查看代码。一开始它看起来像一个反模式。这个
指的是您当前所在的对象,如果我猜它实现了可运行
接口,这是线程
@markspace的第一个参数为什么是反模式?实现Runnable
通常是好的,并且通常是比扩展Thread