TimedSemaphore是一个不错的选择,简单、意义明确. 示例代码 TimedSemaphore timedSemaphore = new TimedSemaphore(2, TimeUnit.SECONDS, 2); new Thread(() -> { for (;;) { if (timedSemaphore.tryAcquire()) { System.out.println(DateFormatUtils.format(new Date(), "HH:mm:ss")); } } }).start(); Thread.sleep(10000); timedSemaphore.shutdown(); 输出 22:40:14 22:40:14 22:40:16 22:40:16 22:40:18 22:40:18 22:40:20 22:40:20 22:40:22 22:40:22