-
怎样停止这样的计时器5
web.xml 配置了一个监听器
<listener> <listener-class>com.czk.util.Listener</listener-class> </listener>
Listener.java
package com.czk.util; import java.util.Timer; import java.util.TimerTask; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import com.czk.main.test3; public class Listener implements ServletContextListener { private Timer timer = test3.getTimer(); //获取静态的Timer对象 public void contextDestroyed(ServletContextEvent e) { timer.cancel(); } public void contextInitialized(ServletContextEvent e) { timer.schedule(Inspection(), 0, 500); } /** * 执行巡检 * * @return */ private TimerTask Inspection() { TimerTask tt = new TimerTask() { @Override public void run() { for (int i = 0; i < 100; i++) { try { System.out.println(i); Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } }; return tt; } }
test3.java //静态的Timer对象
package com.czk.main; import java.util.Timer; public class test3 { public static Timer timer = null; static { timer = new Timer("czk"); } public static Timer getTimer() { if (timer != null) { return timer; } else { return null; } } public static void setSleep() throws Exception { if (timer != null) { timer.cancel(); } } }
tomcat 启动后,这个循环打印1-100 就开始执行了。
这个时候我想让它停下来。
public class test { public static void main(String[] args) throws Exception { Timer timer1 = test3.getTimer(); Timer timer2 = test3.getTimer(); Timer timer3 = test3.getTimer(); System.out.println(timer1.equals(timer2)); System.out.println(timer1.equals(timer3)); timer1.cancel(); } }
通过这样的途径停止不了。
请教高手怎么办才好。
大致的情况就是:服务器启动后,后台定时执行一个方法,这个方法可以通过前台的Action请求进行停止或重启。
2012年11月21日 09:05
2个答案 按时间排序 按投票排序
-
目测应该拿到timer.schedule(Inspection(), 0, 500); 看看这个返回值是什么类型,获取这个方法的返回值对象,然后看看这个对象是不是有cancel方法,调用一下试试
2012年11月23日 17:25
-
TimerTask tt = new TimerTask() { @Override public void run() { for (int i = 0; i < 100; i++) { try { System.out.println(i); Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } };
这个类最好别写成内部类不然不好操作。
直接写一个自己的实现。在for循环里面加上个停止判断。Class MyTimerTask() extends TimerTask{ boolean stop=false; @Override public void run() { for (int i = 0; i < 100&&(!stop); i++) { try { System.out.println(i); Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } public void stop(){ this.stop=true; } };
2012年11月21日 09:26
相关推荐
在教育系统应用中,这样的计时器能够有效地提升比赛的规范性和公正性。 Delphi源码是程序的核心部分,它包含了所有控制计时器行为的指令和逻辑。对于开发者来说,源码的可读性和可维护性至关重要,因为这允许他们...
本篇文章将深入探讨如何在LabVIEW中实现计时器,并涉及计时器的复位功能。 首先,我们来看LabVIEW中的基本计时器类型。有两种主要的计时器:定时器(Timer)和延时器(Delay)。定时器在达到预设时间后触发一个事件...
当时间到达0时,停止计时器并发出通知。 4. **暂停和恢复计时器**: MFC提供了`KillTimer`和`SetTimer`函数来暂停和恢复计时器。当你想要暂停计时器时,调用`KillTimer`并传入计时器ID: ```cpp KillTimer(ID_MY_...
如果需要停止计时器,可以调用`stop()`方法: ```actionscript timer.stop(); ``` 为了实现一个简单的计时器显示,我们可以创建一个动态文本字段(`TextField`)来显示当前时间。首先,创建文本字段并将其放置在...
在工业自动化领域,计时器是不可或缺的一部分,它能够帮助工程师精确地控制设备运行的时间,从而实现定时启动、定时停止、周期性执行任务等功能。本文将详细介绍组态王计时器控件的特性、使用方法以及示例工程,帮助...
停止事件中,停止计时器的计数。 3. 更新显示组件:在计时器的周期性事件中,更新数字显示组件的值,使其与计时器变量同步。 4. 控制计时器:可以设计按钮或开关来控制计时器的启停,通过脚本实现按钮点击事件,调用...
电话通话计时器PCB是一种专门用于记录电话通话时间的硬件设计,主要应用于需要精确计费或...随着现代通信技术的发展,虽然电话通话计费已不再那么依赖硬件计时器,但这样的设计仍能作为学习电子技术的一个经典实例。
【数字计时器(EDA)】是电子设计自动化(EDA)领域的一个常见实践项目,它主要涉及硬件描述语言VHDL...在实际工程中,这样的计时器设计可以应用于各种嵌入式系统、实时操作系统或者作为其他复杂系统中的时间基准模块。
input("按回车键停止计时器...") timer.stop() ``` 在这个例子中,我们创建了一个`CountdownTimer`类,它包含一个`run`方法来执行倒计时。这个方法在一个循环中运行,直到接收到停止信号(通过`event`对象)。主...
【计时器与倒计时器技术解析】 在软件开发领域,计时器和倒计时器是常见的功能模块,广泛应用于各种应用中,如体育赛事、考试计时、健身训练等。计时器用于记录从某个时间点开始流逝的时间,而倒计时器则从设定的...
再次点击则会停止计时器并重置进度条。 在资源的`Countdown`文件中,可能包含了以下内容: 1. `Form1.cs`:包含窗体的定义和计时器、按钮的事件处理函数。 2. `Form1.Designer.cs`:自动生成的代码,用于初始化窗体...
// 停止计时器 // 可能需要更新UI,表示计时器已暂停 } ``` 6. **重新启动计时器**:如果需要继续计时,可以再次调用 SetTimer 来重启计时器。 ```cpp void CMyDialog::OnBnClickedResumeButton() { SetTimer(m...
使用 `Start()` 方法启动计时器,`Stop()` 方法停止计时器: ```csharp timer.Start(); // 启动计时器 timer.Stop(); // 停止计时器 ``` **倒计时计时器实现** 对于倒计时计时器,我们需要在`Timer_Tick`事件处理...
// 停止计时器 SetTimer(m_nTimerID, 1000, NULL); // 重新启动计时器 } CDialogEx::OnTimer(nIDEvent); } ``` 在这个例子中,`m_nTimerID`是计时器的唯一标识符,`1000`是计时器的间隔(以毫秒为单位),`...
(5)如果不按下 stop 键,计时器达到 999 之后停止计数。 (6)如果 LED 指示灯点亮前,按下 stop 键,被视为犯规,数码管上应给出犯规指示。 2. 提高部分 (1) 按下 start 键后,随机间隔一段时间(1~6s)之后,...
为了停止计时器,我们可以使用`clearInterval`函数,传入之前`setInterval`返回的ID: ```javascript clearInterval(timerId); // 停止计时器 ``` 这样的计时器特别适用于个人网站,比如用来纪念重要日期。你可以...
在IT领域,计时器和倒计时是两种常见的时间管理工具,广泛应用于各种软件、网页和移动应用中。在给定的标题“计时器(秒表、倒计时)”中,我们可以理解这是一个集成了秒表和倒计时功能的程序。描述中提到它是“单...
3. **控制逻辑**:这部分代码管理计时器的启动、停止、复位等功能,确保其按预期工作。 4. **输出**:当计时器达到预设值时,会触发一个或多个输出信号,表示时间已到。 **Quartus II平台** Quartus II是Altera公司...
当用户需要暂时停止计时,比如接听电话或进行其他操作时,计时器应提供暂停功能。在程序中,这可能意味着清除已设置的定时器,并保存当前的时间状态,以便之后恢复。 4. **重置计时器**: 重置功能允许用户回到...
本项目是一个简单的时分秒计时器应用,它包含"开始"和"停止"两个功能按钮,用户可以通过这些按钮来控制计时器的工作状态。 首先,我们需要了解Android Studio项目的结构。在这个项目的目录中,`gradlew.bat`是一个...