KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > activemq > thread > Scheduler


1 /**
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one or more
4  * contributor license agreements. See the NOTICE file distributed with
5  * this work for additional information regarding copyright ownership.
6  * The ASF licenses this file to You under the Apache License, Version 2.0
7  * (the "License"); you may not use this file except in compliance with
8  * the License. You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  */

18 package org.apache.activemq.thread;
19
20 import java.util.HashMap JavaDoc;
21
22 import java.util.concurrent.ScheduledFuture JavaDoc;
23 import java.util.concurrent.ScheduledThreadPoolExecutor JavaDoc;
24 import java.util.concurrent.ThreadFactory JavaDoc;
25 import java.util.concurrent.TimeUnit JavaDoc;
26
27 /**
28  * @version $Revision$
29  */

30 public class Scheduler {
31
32     
33     static public ScheduledThreadPoolExecutor JavaDoc clockDaemon = new ScheduledThreadPoolExecutor JavaDoc(5, new ThreadFactory JavaDoc(){
34             public Thread JavaDoc newThread(Runnable JavaDoc runnable) {
35                 Thread JavaDoc thread = new Thread JavaDoc(runnable,"ActiveMQ Scheduler");
36                 thread.setDaemon(true);
37                 return thread;
38             }
39         });
40     static {
41         clockDaemon.setKeepAliveTime(5, TimeUnit.SECONDS);
42     }
43     static HashMap JavaDoc clockTickets = new HashMap JavaDoc();
44
45     synchronized static public void executePeriodically(final Runnable JavaDoc task, long period) {
46         ScheduledFuture JavaDoc ticket = clockDaemon.scheduleAtFixedRate(task, period, period, TimeUnit.MILLISECONDS);
47         clockTickets.put(task, ticket);
48     }
49
50     synchronized static public void cancel(Runnable JavaDoc task) {
51         ScheduledFuture JavaDoc ticket = (ScheduledFuture JavaDoc) clockTickets.remove(task);
52         if( ticket!=null ) {
53             ticket.cancel(false);
54             clockDaemon.remove(task);
55         }
56     }
57
58     public static void executeAfterDelay(final Runnable JavaDoc task, long redeliveryDelay) {
59         clockDaemon.schedule(task, redeliveryDelay, TimeUnit.MILLISECONDS);
60     }
61
62 }
63
Popular Tags