想做一个java闹钟,有人做过没

解决方案 »

  1.   

    这个可以用Spring的定时器做哦,<?xml version="1.0" encoding="UTF-8"?>   
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "spring-beans.dtd" >   
    <beans>   
         <!—要调度的对象-->   
        <bean id="testQuarz" class="springtimer.TestQuarz" />   
      
        <!--定义定时执行testQuarz 这个bean中的sayHello()方法-->   
        <bean id="helloworldTask"    class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">   
            <property name="targetObject">   
                <ref bean="testQuarz" />   
            </property>   
            <property name="targetMethod">   
                <value>sayHello</value>   
            </property>   
        </bean>   
      
        <!--触发器的bean的设置,在这里我们设置了我们要触发的jobDetail是哪个。这里我们定义了要触发的jobDetail是helloworldTask,即触发器去触发哪个bean..并且我们还定义了触发的时间:每天5:17pm-->   
        <bean id="cronTrigger"  
            class="org.springframework.scheduling.quartz.CronTriggerBean">   
            <property name="jobDetail">   
                <ref bean=" helloworldTask " />   
            </property>   
            <property name="cronExpression">   
                <!-- 关键在配置此表达式 -->   
                <value>0 17 17 * * ?</value>   
            </property>   
        </bean>   
      
        <!--管理触发器的总设置,管理我们的触发器列表,可以在bean的list中放置多个触发器。    
        -->   
        <bean autowire="no"  
            class="org.springframework.scheduling.quartz.SchedulerFactoryBean">   
            <property name="triggers">   
                <list>   
                    <ref local="cronTrigger" />   
                </list>   
            </property>   
        </bean>   
    </beans>  <?xml version="1.0" encoding="UTF-8"?> 
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "spring-beans.dtd" > 
    <beans> 
         <!—要调度的对象--> 
    <bean id="testQuarz" class="springtimer.TestQuarz" /> <!--定义定时执行testQuarz 这个bean中的sayHello()方法--> 
    <bean id="helloworldTask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> 
    <property name="targetObject"> 
    <ref bean="testQuarz" /> 
    </property> 
    <property name="targetMethod"> 
    <value>sayHello</value> 
    </property> 
    </bean> <!--触发器的bean的设置,在这里我们设置了我们要触发的jobDetail是哪个。这里我们定义了要触发的jobDetail是helloworldTask,即触发器去触发哪个bean..并且我们还定义了触发的时间:每天5:17pm--> 
    <bean id="cronTrigger" 
    class="org.springframework.scheduling.quartz.CronTriggerBean"> 
    <property name="jobDetail"> 
    <ref bean=" helloworldTask " /> 
    </property> 
    <property name="cronExpression"> 
    <!-- 关键在配置此表达式 --> 
    <value>0 17 17 * * ?</value> 
    </property> 
    </bean> <!--管理触发器的总设置,管理我们的触发器列表,可以在bean的list中放置多个触发器。 
    --> 
    <bean autowire="no" 
    class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 
    <property name="triggers"> 
    <list> 
    <ref local="cronTrigger" /> 
    </list> 
    </property> 
    </bean> 
    </beans> 
      

  2.   

    "0 0 12 * * ?" 每天中午12点触发 
    "0 15 10 ? * *" 每天上午10:15触发 
    "0 15 10 * * ?" 每天上午10:15触发 
    "0 15 10 * * ? *" 每天上午10:15触发 
    "0 15 10 * * ? 2005" 2005年的每天上午10:15触发 
    "0 * 14 * * ?" 在每天下午2点到下午2:59期间的每1分钟触发 
    "0 0/5 14 * * ?" 在每天下午2点到下午2:55期间的每5分钟触发 
    "0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发 
    "0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发 
    "0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44触发 
    "0 15 10 ? * MON-FRI" 周一至周五的上午10:15触发 
    "0 15 10 15 * ?" 每月15日上午10:15触发 
    "0 15 10 L * ?" 每月最后一日的上午10:15触发 
    "0 15 10 ? * 6L" 每月的最后一个星期五上午10:15触发 
    "0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发 
    "0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发 
       每隔5秒执行一次:*/5 * * * * ?   每隔1分钟执行一次:0 */1 * * * ?   每天23点执行一次:0 0 23 * * ?   每天凌晨1点执行一次:0 0 1 * * ?   每月1号凌晨1点执行一次:0 0 1 1 * ?   每月最后一天23点执行一次:0 0 23 L * ?   每周星期天凌晨1点实行一次:0 0 1 ? * L
      

  3.   

    。这个也犯得着用spring????java自带的定时器就能搞定,再不济自己写个线程就搞定了。
      

  4.   


    import java.util.*;
    class Test {
        public static void main(String[] args) {
            Timer timer = new Timer();
            timer.scheduleAtFixedRate(new TimerTask() {
                public void run() {
                    Calendar c = Calendar.getInstance();
                    System.out.printf("%tF %tT\n", c.getTime(), c.getTime());
                }
            }, 0, 1000);
        }
    }
      

  5.   

    简单的 java.util.Timer 就可以搞定
    还可以使用 cron4j 仅仅 36k 大小。
      

  6.   


    public static void main(String[] args) {
    try {
    new Timer().scheduleAtFixedRate(new TimerTask() {
    public void run() {
    System.out.println("闹钟响了");
    }
    },
    new SimpleDateFormat("yyyyMMdd HH:mm:ss").parse("20110826 23:23:00"),
    24*60*60*1000);
    } catch (ParseException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }//new SimpleDateFormat("yyyyMMdd HH:mm:ss").parse("20110826 23:23:00"),设定每次响钟的时间
    java.util.Timer类中的scheduleAtFixedRate(TimerTask task, Date firstTime, long period)方法是:安排指定的任务在指定的时间开始进行重复的固定速率执行。
    task - 所要安排的任务。
    firstTime - 首次执行任务的时间。
    period - 执行各后续任务之间的时间间隔,单位是毫秒。