⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 actualtimerthread.java

📁 High performance DB query
💻 JAVA
字号:
/* * @(#)$Id: ActualTimerThread.java,v 1.3 2004/07/02 23:59:22 huebsch Exp $ * * Copyright (c) 2001-2004 Regents of the University of California. * All rights reserved. * * This file is distributed under the terms in the attached BERKELEY-LICENSE * file. If you do not find these files, copies can be found by writing to: * Computer Science Division, Database Group, Universite of California, * 617 Soda Hall #1776, Berkeley, CA 94720-1776. Attention: Berkeley License * * Copyright (c) 2003-2004 Intel Corporation. All rights reserved. * * This file is distributed under the terms in the attached INTEL-LICENSE file. * If you do not find these files, copies can be found by writing to: * Intel Research Berkeley, 2150 Shattuck Avenue, Suite 1300, * Berkeley, CA, 94704.  Attention:  Intel License Inquiry. */package runtime.services.timer;import java.util.TreeMap;/** * Class ActualTimerThread * */public class ActualTimerThread extends Thread implements Runnable {    private TreeMap events;    private ActualTimer eventProcessor;    private long defaultSleepTime;    private boolean run;    /**     * Constructor ActualTimerThread     *     * @param events     * @param eventProcessor     * @param defaultSleepTime     */    public ActualTimerThread(TreeMap events, ActualTimer eventProcessor,                             long defaultSleepTime) {        this.events = events;        this.eventProcessor = eventProcessor;        this.defaultSleepTime = defaultSleepTime;        this.run = true;    }    private ActualTimerEvent getFirstEvent() {        synchronized (events) {            if (events.size() > 0) {                return (ActualTimerEvent) events.firstKey();            } else {                return null;            }        }    }    private void removeEvent(ActualTimerEvent event) {        synchronized (events) {            events.remove(event);        }    }    private void processQueue() {        ActualTimerEvent firstEvent = getFirstEvent();        while (firstEvent != null) {            double currentTime = eventProcessor.getCurrentTime();            double eventTime = firstEvent.getExecutionTime();            if (eventTime <= currentTime) {                removeEvent(firstEvent);                eventProcessor.runEvent(firstEvent);            } else {                break;            }            // Get the next event            firstEvent = getFirstEvent();        }    }    private long determineSleepTime() {        ActualTimerEvent firstEvent = getFirstEvent();        if (firstEvent != null) {            double currentTime = eventProcessor.getCurrentTime();            double eventTime = firstEvent.getExecutionTime();            double delay = eventTime - currentTime;            if (delay < 0) {                delay = 0;            }            return (long) ((delay) * 1000);        } else {            return defaultSleepTime;        }    }    /**     * Method run     */    public void run() {        while (run) {            processQueue();            try {                Thread.sleep(determineSleepTime());            } catch (InterruptedException e) {}        }    }    /**     * Method end     */    public void end() {        run = false;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -