All Downloads are FREE. Search and download functionalities are using the official Maven repository.

hprose.util.concurrent.Timer Maven / Gradle / Ivy

Go to download

Hprose is a High Performance Remote Object Service Engine. It is a modern, lightweight, cross-language, cross-platform, object-oriented, high performance, remote dynamic communication middleware. It is not only easy to use, but powerful. You just need a little time to learn, then you can use it to easily construct cross language cross platform distributed application system. Hprose supports many programming languages, for example: * AAuto Quicker * ActionScript * ASP * C++ * Dart * Delphi/Free Pascal * dotNET(C#, Visual Basic...) * Golang * Java * JavaScript * Node.js * Objective-C * Perl * PHP * Python * Ruby * ... Through Hprose, You can conveniently and efficiently intercommunicate between those programming languages. This project is the implementation of Hprose for Java.

There is a newer version: 2.0.38
Show newest version
/**********************************************************\
|                                                          |
|                          hprose                          |
|                                                          |
| Official WebSite: http://www.hprose.com/                 |
|                   http://www.hprose.org/                 |
|                                                          |
\**********************************************************/
/**********************************************************\
 *                                                        *
 * Timer.java                                             *
 *                                                        *
 * Timer class for Java.                                  *
 *                                                        *
 * LastModified: Apr 21, 2016                             *
 * Author: Ma Bingyao                   *
 *                                                        *
\**********************************************************/
package hprose.util.concurrent;

import java.util.List;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

public class Timer {
    private final static ScheduledExecutorService timer1 = Executors.newSingleThreadScheduledExecutor();
    private final static ScheduledExecutorService timer2 = Executors.newSingleThreadScheduledExecutor();
    static {
        Threads.registerShutdownHandler(new Runnable() {
            public void run() {
                timer1.shutdown();
                List tasks = timer2.shutdownNow();
                for (Runnable task: tasks) {
                    task.run();
                }
            }
        });
    }
    private final Runnable timeoutCallback;
    public Timer(Runnable callback) {
        timeoutCallback = callback;
    }
    private volatile Future timeoutID = null;
    public synchronized void clear() {
        if (timeoutID != null) {
            timeoutID.cancel(false);
            timeoutID = null;
        }
    }
    public synchronized void setTimeout(int timeout) {
        setTimeout(timeout, false);
    }
    public synchronized void setInterval(int timeout) {
        setInterval(timeout, false);
    }
    public synchronized void setTimeout(int timeout, boolean waitOnShutdown) {
        clear();
        timeoutID = (waitOnShutdown ? timer1 : timer2).schedule(timeoutCallback, timeout, TimeUnit.MILLISECONDS);
    }
    public synchronized void setInterval(int timeout, boolean waitOnShutdown) {
        clear();
        if (timeout > 0) {
            timeoutID = (waitOnShutdown ? timer1 : timer2).scheduleAtFixedRate(timeoutCallback, timeout, timeout, TimeUnit.MILLISECONDS);
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy