【发布时间】:2021-01-25 01:18:22
【问题描述】:
我正在尝试了解 ScheduledExecutorService 的工作原理。我写了这个简单的测试:
ScheduledExecutorService executorService = Executors.newScheduledThreadPool(10);
executorService.scheduleAtFixedRate(() -> {
try {
System.out.println("Test " + Thread.currentThread().getId());
Thread.sleep(10000);
System.out.println("End " + Thread.currentThread().getId());
} catch (Exception ex) {
}
}, 0, 100, TimeUnit.MILLISECONDS);
我看到控制台上打印了以下内容:
Test 19
End 19
Test 19
End 19
Test 21
End 21
等等。执行程序不应该在第一个线程结束之前安排并启动一个新线程吗?如果核心池大小为 10,为什么线程一个接一个地启动。不应该 10 个线程一起运行。
【问题讨论】:
标签: java multithreading