首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java8 ScheduledExecutorService.scheduleAtFixedRate()

Java8 ScheduledExecutorService.scheduleAtFixedRate()
EN

Stack Overflow用户
提问于 2019-05-27 00:31:26
回答 1查看 2.1K关注 0票数 4

我正在读一本java8的书,发现了scheduleAtFixedRateScheduledExecutorService中的scheduleWithFixedDelay方法之间的区别。

我明白这两种方法在书中的区别,但是当我试图写一个简单的代码时。目前还不太清楚为什么scheduleAtFixedRate会使用synchronously.

如您所见,我在池中分配了100个线程。调度器将每1ms提交一个新任务,每个任务有1秒的延迟。

代码语言:javascript
复制
    ScheduledExecutorService s = Executors.newScheduledThreadPool(100);
    s.scheduleAtFixedRate(() -> {
        int num = new Random().nextInt(100);
        System.out.println("Hello World" + num);
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("Finished" + num);
    }, 0, 1, TimeUnit.MILLISECONDS);

但是为什么我会得到这个输出呢?新任务将只在另一个任务之后运行。

代码语言:javascript
复制
Hello World94
Finished94
Hello World14
Finished14
Hello World90
Finished90
Hello World26
Finished26
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56315400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档