Java vert.x-可能有多少个计时器
在vert.x中,我可以创建多少个计时器(主要是一次)而不考虑性能降低、内存问题等。?有一些限制吗 创建这些计时器的场景并不是人为的,我不想一次循环创建几千个计时器,而是在现实世界中,随着时间的推移,计时器可能会不断创建,一次创建几个计时器,一小时创建10个计时器,或者一天创建100个计时器,但这可能会发生,总的来说,有几千个已经创建并等待运行 例如,如果其中几百个在同一时间执行或几乎在同一时间运行,会发生什么?vert.x如何处理这种负载Java vert.x-可能有多少个计时器,java,vert.x,Java,Vert.x,在vert.x中,我可以创建多少个计时器(主要是一次)而不考虑性能降低、内存问题等。?有一些限制吗 创建这些计时器的场景并不是人为的,我不想一次循环创建几千个计时器,而是在现实世界中,随着时间的推移,计时器可能会不断创建,一次创建几个计时器,一小时创建10个计时器,或者一天创建100个计时器,但这可能会发生,总的来说,有几千个已经创建并等待运行 例如,如果其中几百个在同一时间执行或几乎在同一时间运行,会发生什么?vert.x如何处理这种负载 干杯简短回答:即使设置了数百万个周期计时器,也不会发生
干杯简短回答:即使设置了数百万个周期计时器,也不会发生什么事情 您可以自己尝试一下:
Vertx vertx = Vertx.vertx();
AtomicLong counter = new AtomicLong(0);
for (int i = 0; i < 1_000_000; i++) {
vertx.setPeriodic(1, (l) -> {
if (counter.incrementAndGet() % 1_000_000 == 0) {
System.out.print(".");
}
});
}
System.out.println("Done deploying");
Vertx Vertx=Vertx.Vertx();
AtomicLong计数器=新的AtomicLong(0);
对于(int i=0;i<1_000;i++){
顶点设置周期(1,(l)->{
if(counter.incrementAndGet()%1\u 000\u 000==0){
系统输出打印(“.”);
}
});
}
System.out.println(“部署完成”);
在这里你可以看到我创建了1M个计时器,每个计时器每毫秒递增一个计数器。这将使您的CPU达到峰值,并消耗大量内存,但它可以正常工作
我们谈论的是积极运行计时器。睡眠计时器将消耗的唯一资源是内存(因为它们是数据结构中的两个对象)。
只要你没有耗尽内存(你需要成千上万的内存才能实现),你就应该没事了
如果你真的很好奇Vert.x中的计时器是如何工作的,你可以从这里开始观察: