我写了一个小程序想让机器在某一固定时间来运行它,如何实现 ??
    另外顺便问一下,如果同一时刻多个Socket请求发到SERVER,Server会如何处理///??

解决方案 »

  1.   

    int numberOfMillisecondsInTheFuture = 10000; // 10 sec
    Date timeToRun = new Date(System.currentTimeMillis()+numberOfMillisecondsInTheFuture);
        Timer timer = new Timer();
        
        timer.schedule(new TimerTask() {
                public void run() {
                    // Task here ...
                }
            }, timeToRun);
      

  2.   

    1: 定时器,自己用线程实现。
    2: 多个socket请求发到server,server端会依次处理,虽然同时到,但是还是有先后的,一般server开发的时候都会考虑到多线程的,来了一个之后自动开启一个线程来处理,然后接着处理后面的请求。
      

  3.   

    Timer.schedule(TimerTask task,Date firstTime ,long period)安排指定的任务在指定的时间开始进行重复的固定延迟执行.比如: timer.schedule(new MyTask(), 1000, 2000);// 在1秒后执行此任务,每次间隔2秒,如果传递一个Data参数,就可以在某个固定的时间执行这个任务.
    然后这个new MyTask()就是你想要完成的任务
      

  4.   

    请问1L:
        机器每天07:00启动一次,如果启动时让Timer运行起来,我想让它在12:30时执行任务,int numberOfMillisecondsInTheFuture 这个变量那么大,不会影响效率吗???
      

  5.   

    如果你不用任何框架、定时器用的也是java的timer的话,有个简单的方式。
    建一个WEB项目,在web.xml中配置一个listener,这个listener的class就是那个用timer实现定时操作的类。当Tomcat启动的时候会自动执行的。
      

  6.   

    Quartz Job Scheduling Framework 
      

  7.   

    必须要用java?做个jar,然后用操作系统的计划任务做不行吗?
      

  8.   

    Quartz是一个开源的,完全基于java的任务排程框架
      

  9.   

    懒得分了,把三个java文件放一起了,Quartz用起来很方便package quartz;public class MyTask {

    public void task(){
    System.out.println("This is my task!");
    }}package quartz;import org.quartz.Job;
    import org.quartz.JobExecutionContext;
    import org.quartz.JobExecutionException;
    public class MyTaskJob implements Job {

    public void execute (JobExecutionContext context) throws JobExecutionException{ MyTask mytask=new MyTask();
    mytask.task();
    }}package quartz;import java.util.Date;import org.quartz.CronTrigger;
    import org.quartz.JobDetail;
    import org.quartz.Scheduler;
    import org.quartz.SchedulerException;
    import org.quartz.SimpleTrigger;
    import org.quartz.Trigger;
    import org.quartz.impl.StdSchedulerFactory;public class MyTaskJobUsage { /**
     * @param args
     * @throws SchedulerException 
     */
    public static void main(String[] args) throws Exception {

             Scheduler scheduler =new StdSchedulerFactory().getScheduler();
             scheduler.start();
             
             //按时间间隔执行任务
             JobDetail jobdetail = new JobDetail("myTaskJob",Scheduler.DEFAULT_GROUP,MyTaskJob.class);
             
             Trigger trigger = new SimpleTrigger("simpleTrigger",Scheduler.DEFAULT_GROUP,new Date(),null,SimpleTrigger.REPEAT_INDEFINITELY,3000);
             
             scheduler.scheduleJob(jobdetail, trigger);
     
             //定时执行任务
    /*         JobDetail jobdetail1= new JobDetail("myTaskJob",Scheduler.DEFAULT_GROUP,MyTaskJob.class);
             String cronExp="10 1,32 18 * * ?";
             Trigger trigger1 = new CronTrigger("cronTrigger",Scheduler.DEFAULT_GROUP,cronExp);
             scheduler.scheduleJob(jobdetail1, trigger1);*/
    }}