首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >quarkus和ScheduledExecutorService

quarkus和ScheduledExecutorService
EN

Stack Overflow用户
提问于 2021-03-22 22:35:45
回答 1查看 206关注 0票数 4

Quarkus具有调度任务的https://quarkus.io/guides/scheduler。但是,我想使用ScheduledExecutorService。这在夸克中是允许的吗?例如,在wildfly中,必须使用ManagedScheduledExecutorService,因为服务器正在管理线程,而不允许用户管理线程。这对夸克也有效吗?

EN

回答 1

Stack Overflow用户

发布于 2021-10-09 05:14:02

这是一个SimpleSheduler

包:package io.quarkus.scheduler.runtime;

https://github.com/quarkusio/quarkus/blob/main/extensions/scheduler/runtime/src/main/java/io/quarkus/scheduler/runtime/SimpleScheduler.java

为了开发调度器扩展,他们使用了ScheduledExecutorService。

下面是一个使用ScheduledExecutorService,的调度任务

代码语言:javascript
复制
import javax.enterprise.context.ApplicationScoped;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
@ApplicationScoped
public class ScheduledExecutorRunnable {

  List<String> list =
        new ArrayList<String>();

    public List<String> get() {
        sheduleTask();
        return list;
    }

     void sheduleTask() {

        ScheduledExecutorService ses = Executors.newScheduledThreadPool(1);
        Runnable task2 = () -> list.add("Running task2...");
        task1();
        ses.schedule(task2, 10, TimeUnit.SECONDS);
        task3();
        ses.shutdown();

    }

     void task1() {
        list.add("Running task1...");
    }

     void task3() {
        list.add("Running task3...");
    }

}

演示

代码语言:javascript
复制
import com.knf.dev.Resource.ScheduledExecutorService.ScheduledExecutorRunnable;

import javax.inject.Inject;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import java.util.List;

@Path("/verify")
public class EndPoint {

    @Inject
    ScheduledExecutorRunnable scheduledExecutorRunnable;

    @GET
    @Path("/sheduler")
    @Produces(MediaType.APPLICATION_JSON)
    public List<String> sheduler() {
        return scheduledExecutorRunnable.get();
    }
}

命中端点:http://localhost:8080/verify/sheduler

输出:

“运行task1...",”运行task3...“

10秒后到达终结点

输出:

"Running task1...“、"Running task3...”、"Running task2...“、"Running task1...”、"Running task3...“

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66748191

复制
相关文章

相似问题

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