62,615
社区成员
发帖
与我相关
我的任务
分享
public class Solution {
public static void main(String[] args) {
Runner r1=new Runner("尤塞恩", 4);
Runner r2=new Runner("卡尔", 2);
Stopwatch s1=new Stopwatch(r1);
Stopwatch s2=new Stopwatch(r2);
s1.start();
s2.start();
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
r1.setStopped(true);
r2.setStopped(true);
while(s1.isAlive()||s2.isAlive()) {}
System.out.println(r1.getName()+"2秒钟一共跑了"+r1.getStepNumber());
System.out.println(r2.getName()+"2秒钟一共跑了"+r2.getStepNumber());
}
}
class Runner{
private String name;
private int speed;
private boolean isStopped;
private int stepNumber;
public Runner(String name, int speed) {
super();
this.name = name;
this.speed = speed;
this.isStopped=false;
this.stepNumber=0;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getSpeed() {
return speed;
}
public void setSpeed(int speed) {
this.speed = speed;
}
public boolean isStopped() {
return isStopped;
}
public void setStopped(boolean isStopped) {
this.isStopped = isStopped;
}
public int getStepNumber() {
return stepNumber;
}
public void setStepNumber(int stepNumber) {
this.stepNumber = stepNumber;
}
}
class Stopwatch extends Thread{
private Runner owner;
Stopwatch(Runner owner) {
this.owner = owner;
}
@Override
public void run() {
// TODO Auto-generated method stub
while(!owner.isStopped()) {
doStep();
}
}
void doStep() {
try {
Thread.sleep(1000/owner.getSpeed());
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
owner.setStepNumber(owner.getStepNumber()+1);
}
}