请问一下java里能不能对一个函数进行定时,也就是说,对函数的执行进行时间限定,如果在规定的时间内函数还没执行完,则直接退出,当失败处理。

解决方案 »

  1.   

    thinker28754,提交了不是马上就可以看到的,要过一会才行
    Timer类的功能不是这样的,它是按一定的时间间隔执行某动作,与我的要求不一样
      

  2.   

    Timer可以啊,按一定的时间间隔执行,你把间隔设成函数的执行进行时间就可以了啊,大不了加个flag
      

  3.   

    给你个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 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());
    }}
      

  4.   

    可以修改阿!
    在这个函数(class)中增加一个状态变量flag,当任务完成了,就为true,否则为false
    然后用定时器没隔10s检测这个flag,如果flag == false,则执行推出操作
      

  5.   

    Timer定时,过了10秒就让函数:return;
      

  6.   

    www.opensymphone.com有一个开源的定时组件
      

  7.   

    to: pdw2009(不想做菜鸟),你给的那个网址好像打不开啊,是不是写错了?
      

  8.   

    你可以作一个函数啊,如:DO WHILE(这部分为死循环,只有为真才退出或假退出){
                                     判断定时函数{
                                                  如果=你要退出的时间;
                                                  退出循环;
                                                 }
                                     你要运行的代码:{
                                                      体:
                                                      }
                                     }
    哈哈,不知道我的理论对不对,可以参考参考。如果编好了,发给我一分。
    email:[email protected]
      

  9.   

    各位大侠:以上方法我都试过,好像都不行,lcllcl987(毛爷爷)说可以设一个flag,然后用定时器检测这个flag,如果为false就返回,但定时器要重载run方法,这里的返回只是从run方法返回,而不是从我想要定时的函数返回。  请问各位还有没有其它的方法?
      谢谢!
      

  10.   

    long start = System.currentTimeMillis();
    while(true){
    long end = System.currentTimeMillis();
    long current = end - start ;
    if(current >= 你要退出的时间){
    break;
    }
    //你要运行的代码
    }
      

  11.   

    《THINKING IN JAVA》(第三版),讲多线程的那一章里有这方面的内容,自己去查