Package io.microsphere.util
Class StopWatch
- java.lang.Object
-
- io.microsphere.util.StopWatch
-
public class StopWatch extends java.lang.Object
StopWatch
provides a simple way to measure execution time for tasks, supporting nested task tracking. Each task can be started with optional reentrancy control viastart(String, boolean)
.By default, tasks are non-reentrant. Attempting to start a non-reentrant task while it's already running will throw an
IllegalStateException
. If reentrancy is enabled, subsequent calls to start the same task will be ignored until it is stopped.Example Usage
// Basic usage StopWatch stopWatch = new StopWatch("MyStopWatch"); stopWatch.start("Task 1"); // perform operations stopWatch.stop(); System.out.println(stopWatch); // Outputs: StopWatch[id='MyStopWatch', running tasks=[], completed tasks=[Task[name='Task 1', elapsed(ns)=...]], totalTime(ns)=...] // Nested tasks stopWatch.start("Task A"); // do something stopWatch.start("Task B"); // do something else stopWatch.stop(); // stops Task B stopWatch.stop(); // stops Task A // Reentrant task example stopWatch.start("Reentrant Task", true); // do something stopWatch.start("Reentrant Task", true); // this call is ignored // ... stopWatch.stop(); // ends the original task
Note: This class is not thread-safe and should only be used within a single thread.
- Since:
- 1.0.0
- Author:
- Mercy
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
StopWatch.Task
-
Constructor Summary
Constructors Constructor Description StopWatch(java.lang.String id)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.util.List<StopWatch.Task>
getCompletedTasks()
StopWatch.Task
getCurrentTask()
protected StopWatch.Task
getCurrentTask(boolean removed)
java.lang.String
getId()
java.util.List<StopWatch.Task>
getRunningTasks()
long
getTotalTime(java.util.concurrent.TimeUnit timeUnit)
long
getTotalTimeNanos()
void
start(java.lang.String taskName)
void
start(java.lang.String taskName, boolean reentrant)
void
stop()
java.lang.String
toString()
-
-
-
Method Detail
-
start
public void start(java.lang.String taskName) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException
- Throws:
java.lang.IllegalArgumentException
java.lang.IllegalStateException
-
start
public void start(java.lang.String taskName, boolean reentrant) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException
- Throws:
java.lang.IllegalArgumentException
java.lang.IllegalStateException
-
stop
public void stop() throws java.lang.IllegalStateException
- Throws:
java.lang.IllegalStateException
-
getCurrentTask
public StopWatch.Task getCurrentTask()
-
getCurrentTask
protected StopWatch.Task getCurrentTask(boolean removed)
-
getId
public java.lang.String getId()
-
getRunningTasks
public java.util.List<StopWatch.Task> getRunningTasks()
-
getCompletedTasks
public java.util.List<StopWatch.Task> getCompletedTasks()
-
getTotalTimeNanos
public long getTotalTimeNanos()
-
getTotalTime
public long getTotalTime(java.util.concurrent.TimeUnit timeUnit)
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
-