我被赋予了运行两个线程的任务,一个使用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();
}
}
答案 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完成...