class Call {
public static void main(String[] args) throws InterruptedException, ExecutionException {
//使用Callable创建线程 2个线程
ExecutorService ser = Executors.newFixedThreadPool(2);
Race race = new Race("老乌龟",1500);
Race races = new Race("小兔子",500);
//获取值
Future<Integer> res1 = ser.submit(race);
Future<Integer> res2 = ser.submit(races);
//延时
Thread.sleep(2000); //2s
race.setFlag(false);
races.setFlag(false);
int num1 = res1.get();
int num2 = res2.get();
System.out.println("老乌龟跑了"+num1+"步");
System.out.println("小兔子跑了"+num2+"步");
//停止线程
ser.shutdown();
}
}
class Race implements Callable<Integer>{
private String name;
private long time; //延时时间
private boolean flag = true; //标识
private int count = 0; //步数
public Race(String name) {
super();
this.name = name;
}
public Race() {
}
public Race(String name, long time) {
super();
this.name = name;
this.time = time;
}
public Integer call() throws Exception {
while(flag){
Thread.sleep(time); //延时
count++;
}
return count;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public long getTime() {
return time;
}
public void setTime(long time) {
this.time = time;
}
public boolean isFlag() {
return flag;
}
public void setFlag(boolean flag) {
this.flag = flag;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
}