线程对象运行方法

时间:2012-09-11 19:55:30

标签: java multithreading

我需要编写一个使用多个线程的程序。我需要在创建线程对象后使用run()方法。这个run方法似乎是内置的。但是,我需要编写它,我需要它在每次调用时运行一个循环。谁能帮我理解怎么做?

3 个答案:

答案 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方法时,会涉及多少概念,这令人惊讶。祝你好运。