我需要编写一个使用多个线程的程序。我需要在创建线程对象后使用run()方法。这个run方法似乎是内置的。但是,我需要编写它,我需要它在每次调用时运行一个循环。谁能帮我理解怎么做?
答案 0 :(得分:1)
您可以通过传递Thread
接口的匿名实现来创建新的Runnable
实例,然后使用start()
方法来启动线程执行。见下文:
Thread t = new Thread(new Runnable() {
public void run() {
while (!stopped) {
// do something interesting here
}
}
});
t.start();
答案 1 :(得分:0)
答案 2 :(得分:0)
将run()
方法内置到Thread
类中是绝对正常的。此类旨在为应用程序中代表执行线程的任何类提供基本基础结构。将Thread
视为“世界上的任何主题”。现在,在您的应用程序中使用它的正确方法是提供您自己的继承 Thread
的类。这是使用extends
关键字或使用匿名类完成的,就像Dan的回答一样。我们假设您已经扩展了Thread
课程,并将您的课程称为TaskToRunInParallel
。
文档说Thread
类是特殊的 - 如果你继承它(就像我们刚才那样)并将一些代码放在你自己类的run()
方法中(TaskToRunInParallel
in我们的情况),此代码将与应用程序的其余部分并行执行。您需要做的就是在课程start()
的对象上调用TaskToRunInParallel
。
这就是内置run()
方法的原因:它为您提供了一个原型方法来覆盖您自己的类。这样,使用Thread
个对象的任何代码都可以使用TaskToRunInParallel
个对象或任何其他继承自Thread
的类。确实:保证所有这些方法都会从run()
继承Thread
方法,并且可以安全地调用该代码。但是,此调用的结果将始终不同:从Thread
继承的每个类都可以以自己的方式覆盖run()
。这称为多态,与继承一起是面向对象编程的基石之一。
当您考虑覆盖run()
类的Thread
方法时,会涉及多少概念,这令人惊讶。祝你好运。