import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class MyTimer{ public static void main(String[] args) {
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
int count = 1000000; //要下发的短信数据
for(int i=0; i<count;){
System.out.println(++i);
}
}
};
Timer timer = new Timer();
System.out.println("------------定时器启动--------------------");
timer.schedule(timerTask,new Date());
//要在下面一行代码设置一个断点,不然, run 方法还没开始执行,就已经关闭了
System.out.println("------------定时器关闭--------------------");
timerTask.cancel(); //测试证明:能关闭此定时器,但不能立即中止定时器中 run 方法的 for 循环,timer.cancel() 的效果也是一样
System.out.println("------------END--------------------");
}
}
import java.util.Timer;
import java.util.TimerTask;
public class MyTimer{ public static void main(String[] args) {
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
int count = 1000000; //要下发的短信数据
for(int i=0; i<count;){
System.out.println(++i);
}
}
};
Timer timer = new Timer();
System.out.println("------------定时器启动--------------------");
timer.schedule(timerTask,new Date());
//要在下面一行代码设置一个断点,不然, run 方法还没开始执行,就已经关闭了
System.out.println("------------定时器关闭--------------------");
timerTask.cancel(); //测试证明:能关闭此定时器,但不能立即中止定时器中 run 方法的 for 循环,timer.cancel() 的效果也是一样
System.out.println("------------END--------------------");
}
}
解决方案 »
- Tomcat
- Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]将截断字符串或二进制数据
- 删除表格内容
- 十万火急, 采用weblogic做的webservice抛IncompatibleClassChangeError异常
- 图片高级处理:如何将一张图片中所有的白色象素点透明,高手进
- EJB中事务问题?
- struts 中 使用下拉列表框中的问题
- 为什么会出现 "error establishing socket" 错误!
- 有什么好的工具可以讲html帮助制作成chm文件吗?
- 如何把sftp上的文件传给一个接口
- ssh更新数据库数据报错
- hibernate 多对多 一方需要更新
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;/**
* 在网上找到了以下方法,可以立即中止 run 方法中正在运行的 for循环,不知道是否会产生次生问题
* 来源:http://mgc.name/article.asp?id=234
* @author Vickey
*
*/
public class MyTimer{ public static void main(String[] args) {
TimerTask timerTask = new TimerTask() {
private boolean goOn = true;
@Override
public void run() {
int count = 1000000; //要下发的短信数据
for(int i=0; i<count;){
if (!this.goOn) { //继续还是立即中止
break;
}
System.out.println(++i);
}
}
//重写了 cancel 方法
@Override
public boolean cancel() {
super.cancel();
return this.goOn = false;
}
};
Timer timer = new Timer();
System.out.println("------------定时器启动--------------------");
timer.schedule(timerTask,new Date());
//要在下面一行代码设置一个断点,不然, run 方法还没开始执行,就已经关闭了
System.out.println("------------定时器关闭--------------------");
timerTask.cancel();
System.out.println("------------END--------------------");
}
}
import java.util.Timer;
import java.util.TimerTask;
public class MyTimer{
public static void main(String[] args) {
timer.schedule(new SendMsgTask(),1000,1000);
}
public static void stopTimer(){
System.out.println("停止任务...");
timer.cancel();
}
private final static Timer timer = new Timer();
}
class SendMsgTask extends TimerTask {
public void run() {
int count = 1000; //要下发的短信数据
for(int i=0; i<count;i++){
if(i==50){
MyTimer.stopTimer();//停止计时器
break;
}
System.out.println("发送短信:"+i);
}
}
};
停止定时器 ,再加个break 就行了,见代码:谢了,参考下