[英]Run timer without thread in java
我正在构建运行1000个(及更多)客户端的模拟器,在每个要在X时间后运行任务的客户端中,我尝试了TimerTask
,问题是在每个任务(超过1000个)中创建了新线程。
是否有没有线程的任务计时器?
您可以使用单个Timer调度多个TimerTask,但它们不能同时运行。 根据您的需要,这可能就足够了。
但是,引用Timer的javadoc:
Java 5.0引入了
java.util.concurrent
包,其中的并发实用程序之一是ScheduledThreadPoolExecutor
,它是一个线程池,用于以给定的速率或延迟重复执行任务。 实际上,它是Timer
/TimerTask
组合的更通用的替代品,因为它允许多个服务线程,接受各种时间单位,并且不需要子类化TimerTask
(只需实现Runnable
)。 使用一个线程配置ScheduledThreadPoolExecutor
使其等效于Timer
。
如果要模拟1000个(和更多)同时执行的客户端,则必须使用Thread
! 否则,您将只有一个线程,在其中您的确定逻辑将指定何时完成什么客户端的逻辑-实际上不会模拟并行执行的客户端。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.