实现Runnable和扩展线程

时间:2011-04-25 15:04:00

标签: multithreading

我被赋予了运行两个线程的任务,一个使用extends,一个使用implements runnable,输出意味着类似于此 F(0) F(1) F(2) ......... S(0) S(1) S(2)

到目前为止我正在接受 F(0) S(1) F(1) F(2) S(2)

public class Fast implements Runnable
{

    /** Creates a new instance of Fast */

   public void run()
   {
      for(int i = 0; i <= 9; i++)
      {
       try
        {
            System.out.println("F("+ i + ")");
            Thread.sleep(200);     
        }
        catch(InterruptedException e)
        {
         String errMessage = e.getMessage();
         System.out.println("Error" + errMessage);
        }
      }
   }
}

public class Slow extends Thread
{

    /** Creates a new instance of Slow */

   public void run()
   {
      for(int i = 0; i <= 6; i++)
      {
        try
        {
            System.out.println("S("+ i + ")");
            Thread.sleep(400);

        }
        catch(InterruptedException e)
        {
          String errMessage = e.getMessage();
          System.out.println("Error" + errMessage);
        }
      } 
   }    
}

主要

public class Main
{
    public static void main(String args[])
    {

      Fast f = new Fast();
      Slow s = new Slow();
      Thread ft = new Thread(f);

      ft.start();   
      s.start();

    }
}

1 个答案:

答案 0 :(得分:1)

好像你想在Fast之后慢慢跑?你的输出几乎是我所期望的。最终F将更快完成(仅2000ms),S仍将运行(2800ms)。我不是这个任务与实现Runnable或扩展Thread有什么关系,因为它们会给你相同的最终结果。

如果你希望F在S之前完全完成,你需要首先加入F,就像这样:

Fast f = new Fast();
Slow s = new Slow();
Thread ft = new Thread(f);

ft.start();
ft.join();
s.start();

即使开始S给你所需的输出F1,F2,...... S1,S2,......等待ft完成...