Java定时器主要有以下几种方法:
- Timer类:这是Java早期版本中提供的定时器类,它提供了基于单线程的任务调度功能。使用Timer类时,可以创建一个Timer对象,然后使用schedule()方法来安排任务在指定的时间或按照特定的重复间隔执行。但是,Timer类只能创建一个Timer实例,如果需要创建多个独立的定时器,则需要为每个定时器创建一个新的Timer对象。
- TimerTask类:这是与Timer类配合使用的任务类,用于定义要执行的具体任务。TimerTask类实现了Runnable接口,因此可以像其他Runnable任务一样被调度执行。通过创建TimerTask的子类并重写run()方法,可以定义任务的执行逻辑。
- ScheduledExecutorService接口:这是Java并发包中提供的一个接口,用于实现基于线程池的定时任务调度。ScheduledExecutorService接口提供了与Timer类似的功能,但具有更高的性能和更强大的功能。通过Executors工具类可以创建ScheduledExecutorService实例,然后使用schedule()、scheduleAtFixedRate()或scheduleWithFixedDelay()方法来安排任务在指定的时间或按照特定的重复间隔执行。
- ScheduledFuture接口:这是ScheduledExecutorService接口返回的一个接口,用于表示异步计算的结果。通过调用ScheduledFuture的cancel()、isCancelled()和isDone()方法,可以取消任务、检查任务是否被取消或检查任务是否已经完成。
这些方法提供了灵活的定时任务调度功能,可以根据实际需求选择合适的方法来实现定时器。