/************************************************************************** * Copyright (c) 2006 by Chris Gray, /k/ Embedded Java Solutions. * * All rights reserved. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * * notice, this list of conditions and the following disclaimer in the * * documentation and/or other materials provided with the distribution. * * 3. Neither the name of /k/ Embedded Java Solutions nor the names of * * other contributors may be used to endorse or promote products * * derived from this software without specific prior written permission.* * * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED * * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * * IN NO EVENT SHALL /K/ EMBEDDED JAVA SOLUTIONS OR OTHER CONTRIBUTORS BE * * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * **************************************************************************/ package wonka.test; import java.util.Timer; import java.util.TimerTask; import java.lang.InterruptedException; public class TimerTest { private static final int NB = 10; int index; long i[]; long j[]; private class TestTimerTask extends TimerTask { public void run() { j[TimerTest.this.index] = System.currentTimeMillis(); System.out.println("delta = " + (j[TimerTest.this.index] - i[TimerTest.this.index])); synchronized(TimerTest.this) { TimerTest.this.notify(); } } } public static void main(String[] argv) { System.out.println("Starting"); int delta = 1000; if(argv.length == 1) delta = Integer.parseInt(argv[0]); new TimerTest().test(delta); System.out.println("Stopping"); System.exit(0); } private void test(int delta) { this.i = new long[NB]; this.j = new long[NB]; System.out.println(NB+" tries with delta = "+delta+"ms."); try { Timer t = new Timer(); for(index = 0; index < NB; index++) { synchronized(this) { // was here : Timer t = new Timer(); System.out.println("scheduling task # "+index); this.i[index] = System.currentTimeMillis(); t.schedule(new TestTimerTask(), delta); this.wait(); } } } catch(InterruptedException e) { e.printStackTrace(); } long res = 0; for(index = 0; index < NB; index++) { res += this.j[index] - this.i[index]; } System.out.println("average delta = " + res/NB); } }