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

org.javasimon.examples.CallbackExample Maven / Gradle / Ivy

The newest version!
package org.javasimon.examples;

import org.javasimon.SimonManager;
import org.javasimon.StopwatchSample;
import org.javasimon.callback.CallbackSkeleton;
import org.javasimon.Split;
import org.javasimon.Stopwatch;
import org.javasimon.utils.SimonUtils;

/**
 * CallbackExample shows how to implement callback that prints out some information on the specific events.
 *
 * @author Richard "Virgo" Richter
 */
public final class CallbackExample {
	/**
	 * Entry point to the Callback Example.
	 *
	 * @param args unused
	 */
	public static void main(String[] args) {
		SimonManager.callback().addCallback(new CallbackSkeleton() {
			@Override
			public void onStopwatchStart(Split split) {
				System.out.println("\nStopwatch " + split.getStopwatch().getName() + " has just been started.");
			}

			@Override
			public void onStopwatchStop(Split split, StopwatchSample sample) {
				System.out.println("Stopwatch " + split.getStopwatch().getName()
					+ " has just been stopped (" + SimonUtils.presentNanoTime(split.runningFor()) + ").");
			}
		});

		Stopwatch sw = SimonManager.getStopwatch(SimonUtils.generateName());
		sw.start().stop();

		Split split = sw.start();
		//noinspection StatementWithEmptyBody
		for (int i = 0; i < 1000000; i++) {
			// what does JVM do with empty loop? :-)))
		}
		split.stop();

		sw.start().stop();

		System.out.println("\nAdditional stop() does nothing, Split state is preserved.");
		split.stop();
		System.out.println("split = " + split);
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy