我可以使用Timer对象使程序饱和吗?

我有一个程序,我计划使用很多Timer对象,据我所知,每个Timer都运行在它自己的线程上。 所以我想知道是否有可能启动这么多的计时器,它会伤害程序的性能太multithreading。

例如,我想有几个(布尔,计时器)对可以在几个不同的时间间隔反转布尔值。

是的, Timer对象确实消耗了线程资源,因此可以在JVM中达到限制。 如果您的目标是安排任务在不同时间点运行,您可能需要查看许多Java ExecutorService实现之一,例如ScheduledThreadPoolExecutor 。 Executors类提供了一个方便的工厂来生成这些对象。 多个实现使用线程池,您可以配置线程池以确定可以同时运行的任务数。 您还可以使用任务生成的输出(如果有),并在程序需要退出时以有序的方式关闭任务。

您可以在同一个Timer上运行多个任务。 根据任务的cpu密集程度,您可以只使用一个或几个Timer实例来管理所有任务。 或者,如@Rob所述,您可以使用ScheduledThreadPoolExecutor。