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

📄 asynctimer.java

📁 High performance DB query
💻 JAVA
字号:
/* * @(#)$Id: AsyncTimer.java,v 1.7 2005/07/09 20:11:14 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.text.DateFormat;import java.util.Date;import org.apache.log4j.Logger;import runtime.schedulers.ASyncCore;import runtime.schedulers.ASyncCore.TimerCB;import services.Output;import services.timer.Timer;import services.timer.TimerClient;import util.logging.StructuredLogMessage;/** * Class AsyncTimer * */public class AsyncTimer implements Timer, TimerCB {    private static Logger logger = Logger.getLogger(AsyncTimer.class);    private ASyncCore timerCore;    private long timeOffset;    private Object syncObject;    /**     * Constructor AsyncTimer     *     * @param timerCore     * @param beginTime     * @param ignoreBeginTime     * @param syncObject     */    public AsyncTimer(ASyncCore timerCore, String beginTime,                      boolean ignoreBeginTime, Object syncObject) {        this.timerCore = timerCore;        if (ignoreBeginTime) {            this.timeOffset = System.currentTimeMillis();        } else {            try {                DateFormat beginDate =                    DateFormat.getDateTimeInstance(DateFormat.SHORT,                                                   DateFormat.SHORT);                beginDate.setLenient(true);                this.timeOffset =                    ((Date) beginDate.parseObject(beginTime)).getTime();            } catch (Exception exception) {                throw new RuntimeException("TIMER: Unable to parse begin time: "                                           + beginTime + ", "                                           + exception.getMessage());            }        }        this.syncObject = syncObject;    }    /**     * Method schedule     *     * @param relativeTime     * @param data     * @param client     */    public void schedule(double relativeTime, Object data, TimerClient client) {        double executionTime = relativeTime + getCurrentTime();        ActualTimerEvent event = ActualTimerEvent.allocate(executionTime, data,                                     client);        timerCore.register_timer((long) (relativeTime * 1000D), this, event);    }    /**     * Method scheduleMS     *     * @param relativeTimeMS     * @param data     * @param client     */    public void scheduleMS(long relativeTimeMS, Object data,                           TimerClient client) {        long executionTime = relativeTimeMS + getCurrentTimeMS();        ActualTimerEvent event = ActualTimerEvent.allocate(executionTime, data,                                     client);        timerCore.register_timer(relativeTimeMS, this, event);    }    /**     * Method getCurrentTime     * @return     */    public double getCurrentTime() {        return (((double) (System.currentTimeMillis() - timeOffset)) / 1000D);    }    /**     * Method getCurrentTimeMS     * @return     */    public long getCurrentTimeMS() {        return System.currentTimeMillis() - timeOffset;    }    /**     * Method cb     *     * @param user_data     */    public void timer_cb(Object user_data) {        Integer eventID = StructuredLogMessage.getReference();        ActualTimerEvent event = (ActualTimerEvent) user_data;        // run the event        TimerClient client = event.getClient();        if (Output.debuggingEnabled) {            logger.debug(                new StructuredLogMessage(                    eventID, "Executing Timer Callback Event", new Object[]{"d",                                                                            client.getClass().getName()}, new Object[]{                                                                            "p",                                                                            client}));        }        synchronized (syncObject) {            client.handleClock(event.getData());        }        if (Output.debuggingEnabled) {            logger.debug(                new StructuredLogMessage(                    eventID, "Timer Callback Event Finished", new Object[]{"d",                                                                           client.getClass().getName()}, new Object[]{                                                                           "p",                                                                           client}));        }        ActualTimerEvent.free(event);    }}

⌨️ 快捷键说明

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