使用hazelcast 3.8中的 ScheduledExecutorService ,我有一个内存不足异常。问题是我正在提供服务,应该提醒用户一天中的某些事件。任务的执行应该是容错的。 用户设置新的提醒,这是ScheduledExecutorService的任务,因此任务量可以是每天数千。每个任务使用计划(Runnable命令,长延迟,TimeUnit单元)将调度程序添加为一次性操作。延迟不能超过24小时。当我开始进行测试并在循环中添加任务时,我有一个例外。我认为执行后的任务将从内存中删除,但可能我错了。
你能否回答几个问题:
答案 0 :(得分:2)
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();
答案 1 :(得分:0)
我们正在使用调度执行程序服务在某些延迟后运行Runnable Task,但看起来执行后没有从内存中删除任务。我们通过遍历executorService.getAllScheduledFutures()来验证并检查大小。