需求是这样的,我每隔三个小时调用某个方法,需要用到线程时间控制问题,每隔三个小时执行一次方法,然后关闭线程,三个小时后再调用,意思很简单,我说的有点啰嗦,但是大家应该能明白,我需要的是具体代码,希望大虾门帮忙!

解决方案 »

  1.   


    Timer myTimer = new Timer();
    myTimer .schedule(new MyTimerTask(), 0,60*1000*30);public class MyTimerTaskextends TimerTask {
    private Logger logger = Logger.getLogger(FenFaTimerTask.class);
    private static int IS_RUN = 0;

    public void run() {
    if(IS_RUN==0){
    IS_RUN = 1;
                            ........
    IS_RUN = 0;
    }else{
    logger.error("上次任务未结束");
    }

    }}
      

  2.   


    import java.io.IOException;
    import java.util.Timer;public class TimerTest {
           
        public static void main(String[] args){
            Timer timer = new Timer();
            timer.schedule(new MyTask(), 1000, 2000);//在1秒后执行此任务,每次间隔2秒,如果传递一个Data参数,就可以在某个固定的时间执行这个任务.
            while(true){//这个是用来停止此任务的,否则就一直循环执行此任务了
                try {
                    int ch = System.in.read();
                    if(ch-'c'==0){
                        timer.cancel();//使用这个方法退出任务
                        
                    }
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
        
        
        static class MyTask extends java.util.TimerTask{        @Override
            public void run() {
                // TODO Auto-generated method stub
                System.out.println("________");
            }
        }   
    }
      

  3.   

    大体代码如下:
    long time=1000*60*60*3  //单位是毫秒
    Timer timer=new Timer();
    timer.schedule(new TimerTask(){
       public void run(){
          //做你想做的事情   }
    },time,time);
      

  4.   

    太烦了·直接用spring的quartz
    配置时间就像 linux下面corntab。
      

  5.   

    请问下1楼的:
          int ch = System.in.read();
         if(ch-'c'==0){
            timer.cancel();//使用这个方法退出任务              
          }
    这里的ch 和'c'是什么意思 做什么的? 谢谢
      

  6.   


        public static void main(String[] args)
        {
            Timer timer = new Timer();
            timer.schedule(new TimerTask()
            {
                public void run()
                {
                    System.out.println("call me...");
                }
            }, 1000, 3000);//1000*60*60*3
            //这个是程序启动后1s后每3s执行一次.
        }
      

  7.   

    项目中就用quartz,定时扫描很方便。
      

  8.   

    用Timer和TimerTask
    太烦了·直接用spring的quartz
    配置时间就像 linux下面corntab。
      

  9.   

    用Timer和TimerTask 
     时间上面设置一下就好了啊 
      

  10.   

    使用quartz框架吧 实现起来很简单的
      

  11.   

    我也GOOGLE,但是楼上几位都是网上的那个方法,我试过了,有点不爽,我现在是测试编码阶段,线程一旦开启虽然是定时的,但是关闭不了,只能通过任务管理器来关,很麻烦!