ScheduledThreadPool
/** * ScheduledPool * Scheduled: 计划中的,定时的 * 执行定时的任务,类似Delay, 可以替代Timer */ public class T10_ScheduledPool { public static void main(String[] args) { ScheduledExecutorService service = Executors.newScheduledThreadPool(4); // 使用固定的频率执行某个任务 // 四个参数 // command: 执行的任务 // initialDelay: 第一次执行延时多久执行 // period: 每隔多久执行一次这个任务 // unit: 时间单位 service.scheduleAtFixedRate(() -> { try { TimeUnit.MILLISECONDS.sleep(new Random().nextInt(1000)); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName()); }, 0, 500, TimeUnit.MILLISECONDS); // 每隔500ms打印一下线程名称 // 线程执行1000ms,而每sleep 500 就要新启动一个线程 // 上个线程未执行完毕,会启用新的线程执行 // 如果线程池已满,只有延时 } }