SOS:java函数定时问题 请问一下java里能不能对一个函数进行定时,也就是说,对函数的执行进行时间限定,如果在规定的时间内函数还没执行完,则直接退出,当失败处理。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 thinker28754,提交了不是马上就可以看到的,要过一会才行Timer类的功能不是这样的,它是按一定的时间间隔执行某动作,与我的要求不一样 Timer可以啊,按一定的时间间隔执行,你把间隔设成函数的执行进行时间就可以了啊,大不了加个flag 给你个demo,直接运行看效果import java.util.Calendar;import java.util.Date;import java.util.Timer;import java.util.TimerTask;public class TimerTest {private final static long JOB_INTERNAL = 1000 * 10;/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubTimer timer = new Timer();// timer.scheduleAtFixedRate(new MyTask, );Calendar currentTime = Calendar.getInstance();currentTime.setTime(new Date());int currentHour = currentTime.get(Calendar.HOUR);currentTime.set(Calendar.HOUR, currentHour + 1);currentTime.set(Calendar.MINUTE, 0);currentTime.set(Calendar.SECOND, 0);currentTime.set(Calendar.MILLISECOND, 0);Date NextHour = currentTime.getTime();//System.out.println(NextHour);timer.scheduleAtFixedRate((TimerTask) new MyTask(), 0, JOB_INTERNAL);System.out.println("after timer");}}class MyTask extends TimerTask {public void run() {// TODO Auto-generated method stubSystem.out.println(new Date());}} 可以修改阿!在这个函数(class)中增加一个状态变量flag,当任务完成了,就为true,否则为false然后用定时器没隔10s检测这个flag,如果flag == false,则执行推出操作 Timer定时,过了10秒就让函数:return; www.opensymphone.com有一个开源的定时组件 to: pdw2009(不想做菜鸟),你给的那个网址好像打不开啊,是不是写错了? 你可以作一个函数啊,如:DO WHILE(这部分为死循环,只有为真才退出或假退出){ 判断定时函数{ 如果=你要退出的时间; 退出循环; } 你要运行的代码:{ 体: } }哈哈,不知道我的理论对不对,可以参考参考。如果编好了,发给我一分。email:[email protected] 各位大侠:以上方法我都试过,好像都不行,lcllcl987(毛爷爷)说可以设一个flag,然后用定时器检测这个flag,如果为false就返回,但定时器要重载run方法,这里的返回只是从run方法返回,而不是从我想要定时的函数返回。 请问各位还有没有其它的方法? 谢谢! long start = System.currentTimeMillis();while(true){ long end = System.currentTimeMillis(); long current = end - start ; if(current >= 你要退出的时间){ break; } //你要运行的代码 } 《THINKING IN JAVA》(第三版),讲多线程的那一章里有这方面的内容,自己去查 怎么获取文件夹的大小? 如何卸载JDK? 异常处理 求助:P2P流量检测的java代码 对这段正则表达式的疑惑 写了一个注册小程序,用Struts+DAO,在具体实现方法中出了点问题 我想问一下,javax和java包是放在哪个.jar文件中 请看看这样的程序逻辑上是不是有问题?谢谢! 申请版斧! java如何调用VC写的DLL? 如果设置JApplet所有的button都不可用 swing中使用图片的严重问题,难道是swing的bug,搞了一天,伤透了心
Timer类的功能不是这样的,它是按一定的时间间隔执行某动作,与我的要求不一样
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;public class TimerTest {private final static long JOB_INTERNAL = 1000 * 10;/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Timer timer = new Timer();
// timer.scheduleAtFixedRate(new MyTask, );Calendar currentTime = Calendar.getInstance();
currentTime.setTime(new Date());int currentHour = currentTime.get(Calendar.HOUR);currentTime.set(Calendar.HOUR, currentHour + 1);
currentTime.set(Calendar.MINUTE, 0);
currentTime.set(Calendar.SECOND, 0);
currentTime.set(Calendar.MILLISECOND, 0);Date NextHour = currentTime.getTime();//System.out.println(NextHour);timer.scheduleAtFixedRate((TimerTask) new MyTask(), 0, JOB_INTERNAL);
System.out.println("after timer");
}}
class MyTask extends TimerTask {public void run() {
// TODO Auto-generated method stub
System.out.println(new Date());
}}
在这个函数(class)中增加一个状态变量flag,当任务完成了,就为true,否则为false
然后用定时器没隔10s检测这个flag,如果flag == false,则执行推出操作
判断定时函数{
如果=你要退出的时间;
退出循环;
}
你要运行的代码:{
体:
}
}
哈哈,不知道我的理论对不对,可以参考参考。如果编好了,发给我一分。
email:[email protected]
谢谢!
while(true){
long end = System.currentTimeMillis();
long current = end - start ;
if(current >= 你要退出的时间){
break;
}
//你要运行的代码
}