java线程池在多次运行同一任务时表现不同



我使用Executors.newFixedThreadPool(8(来执行一些耗时的任务,并使用future.get方法将超时设置为10秒。然后我发现,有些任务单独执行时可以成功执行,但与其他任务一起执行时会超时。这些任务彼此独立,cpu和内存足够。为什么会发生这种事?

我已经知道原因了。这是由于墙时间和线程时间的差异。future.get设置了线程的墙时间,但由于CPU时间片的旋转,线程的实际运行时间是线程时间。当任务同时执行时,即使是小任务也有饿死的风险。

最新更新