当前位置: 首页 > 知识库问答 >
问题:

Hazelcast ScheduledExecutorService

岳涵煦
2023-03-14

使用hazelcast 3.8中的ScheduledExecutorService,我遇到了内存不足异常。问题是我正在做一项服务,它应该提醒用户一天中的一些事件。任务的执行应该是容错的。用户设置新的提醒,这是ScheduledExecutorService的一项任务,因此每天的任务量可以达到数千。每个任务都使用schedule(可运行命令、长延迟、时间单位)作为一次性操作添加到scheduler中。延迟时间不能超过24小时。当我开始进行测试并在循环中添加任务时,我遇到了一个oom异常。我以为执行后的任务会从内存中删除,但可能我错了。

你能回答几个问题吗?

  1. 任务执行后是否应该从内存中删除?
  2. 有这样的设置吗?
  3. 我可以使用SchduledExecutorService执行很多一次性动作任务吗?
  4. 有没有另一种方法来解决我的任务与Hazelcast位不使用计划执行服务

共有2个答案

卫建义
2023-03-14

我们正在使用schedule executor服务在一定延迟后运行可运行的任务,但看起来任务在执行后并没有从内存中删除。我们通过遍历executorService进行验证。getAllScheduledFutures()并检查大小。

怀经赋
2023-03-14
        HazelcastInstance instance = Hazelcast.newHazelcastInstance();

        IScheduledExecutorService scheduler = instance.getScheduledExecutorService("scheduler");
        IScheduledFuture future = scheduler.schedule(named("MyTask",
                new EchoTask("foobar")), 1, TimeUnit.SECONDS);

        Object result = future.get();
        System.out.println(future.getHandler().getTaskName() + " result: " + result);

        future.dispose();

        System.out.println("Press any key to exit");
        System.in.read();
        Hazelcast.shutdownAll();
 类似资料:

相关问答

相关文章

相关阅读