其实就是main()里面创建5个thread分别运行,但是想确定哪个最先运行完(也就是winner)。不知道用Thread.isAlive()实现是否正确,求助各位。代码如下所示。 public class RaceCar extends Thread
{
private int finish;
private String name;
public RaceCar(String name, int finish)
{
this.finish = finish;
this.name = name;
}
public void run()
{
for (int index=0; index<finish; index++)
{
System.out.println(name + ": " + index);
try
{
Thread.sleep((long)(Math.random()*5000));
}
catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println(name + " finished!");
}
}public class Race { public static void main(String[] args)
{
RaceCar[] cars = new RaceCar[5];
int finish = Integer.parseInt(args[args.length-1]);
for (int index=0; index<args.length-1; index++)
{
cars[index] = new RaceCar(args[index], finish);
}
for (int index=0; index<args.length-1; index++)
{
cars[index].start();
}
while (true)
{
for (int index=0; index<args.length-1; index++)
{
if (cars[index].isAlive() == false)
{
System.out.println(args[index] + " is the WINNER!!!");
return;
}
}
}
}
}
{
private int finish;
private String name;
public RaceCar(String name, int finish)
{
this.finish = finish;
this.name = name;
}
public void run()
{
for (int index=0; index<finish; index++)
{
System.out.println(name + ": " + index);
try
{
Thread.sleep((long)(Math.random()*5000));
}
catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println(name + " finished!");
}
}public class Race { public static void main(String[] args)
{
RaceCar[] cars = new RaceCar[5];
int finish = Integer.parseInt(args[args.length-1]);
for (int index=0; index<args.length-1; index++)
{
cars[index] = new RaceCar(args[index], finish);
}
for (int index=0; index<args.length-1; index++)
{
cars[index].start();
}
while (true)
{
for (int index=0; index<args.length-1; index++)
{
if (cars[index].isAlive() == false)
{
System.out.println(args[index] + " is the WINNER!!!");
return;
}
}
}
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货