package com.youkeda.test.threadpool;
public class Animal implements Runnable {
private String name;
private int speed;
public Animal(String name, int speed) {
this.name = name;
this.speed = speed;
}
// 比赛长度
public int length = 20;
@Override
public void run() {
if (length > 0) {
length -= speed;
System.out.println(name + "跑了" + speed + "米,距离终点还有" + length + "米");
if (length <= 0) {
length = 0;
System.out.println(name + "到达终点");
}
}
}
}
package com.youkeda.test.threadpool;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class Track {
private static final ScheduledExecutorService threadPool = Executors.newScheduledThreadPool(10);
private static final String DATE_TIME = "yyyy-MM-dd HH:mm:ss";
private static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DATE_TIME);
public static void main(String[] args) {
System.out.println(LocalDateTime.now().format(formatter) + ": begin");
Animal rabbit = new Animal("兔子", 5);
Animal tortoise = new Animal("乌龟", 2);
threadPool.scheduleAtFixedRate(rabbit, 1, 3, TimeUnit.SECONDS);
threadPool.scheduleAtFixedRate(tortoise, 1, 1, TimeUnit.SECONDS);
}
}