Java使用Timer控制线程执行时间

4星 · 超过85%的资源 需积分: 33 10 下载量 151 浏览量 更新于2024-10-09 收藏 729B TXT 举报
"通过自定义时间段控制线程的运行时间 i.Date; .Timer;" 在Java编程中,有时候我们需要控制线程的执行时间和行为,比如定时执行某个任务或者限制任务的运行时长。在这个示例中,`java.util.Date` 和 `java.util.Timer` 类被用来实现这样的功能。下面我们将详细探讨这两个类以及如何使用它们来控制线程的运行时间。 首先,`java.util.Date` 类代表一个具体的日期和时间。在这里,我们用它来打印当前的时间,以便观察程序运行过程中的时间变化。`new Date()` 创建了一个表示当前时间的 `Date` 对象,然后 `System.out.println(new Date())` 将这个时间打印出来。 其次,`java.util.Timer` 类是一个调度工具,用于安排在后台线程上重复或一次性执行的任务。`Timer` 类的构造函数接受一个布尔值,表示是否取消任务时自动取消 `Timer` 对象。在这个例子中,我们传入 `true` 表示如果任务被取消,`Timer` 对象也会被取消。 我们创建了一个 `Test` 类,它扩展了 `TimerTask` 类。`TimerTask` 是一个抽象类,它定义了 `run()` 方法,这个方法将在指定的时间后由 `Timer` 对象调用。在 `Test` 类中,我们覆盖了 `run()` 方法,当该方法被调用时,会打印 "END" 并设置 `cirFlg` 为 `false`,从而结束循环。 在 `main` 方法中,我们创建了一个 `Test` 类的实例,并实例化了一个 `Timer` 对象。`timer.schedule(thisClass, 60 * 1000)` 这行代码将 `Test` 实例作为任务调度,延迟 60 秒(60 * 1000 毫秒)后执行。这意味着 `run()` 方法将在60秒后被调用。 `cirStart()` 方法是一个无限循环,每300毫秒打印一次当前时间,直到 `cirFlg` 被设置为 `false`。由于 `run()` 方法会在60秒后将 `cirFlg` 设置为 `false`,这会导致 `cirStart()` 方法的循环停止,从而结束了线程的运行。 总结一下,这个例子展示了如何利用 `java.util.Date` 和 `java.util.Timer` 来控制线程的执行。`Date` 用于显示时间,而 `Timer` 则用于安排任务的执行并控制其运行时间。通过扩展 `TimerTask` 并重写 `run()` 方法,我们可以自定义线程执行的具体操作和结束条件。这种机制在需要定时任务或限制任务运行时间的场景下非常有用,例如在服务器维护、数据刷新或者用户界面更新等场景。
2021-02-19 上传