1 /**
2 A stopwatch accumulates time when it is running. You can
3 repeatedly start and stop the stopwatch. You can use a
4 stopwatch to measure the running time of a program.
5 */
6 public class StopWatch
7 {
8 private long elapsedTime;
9 private long startTime;
10 private boolean isRunning;
11
12 /**
13 Constructs a stopwatch that is in the stopped state
14 and has no time accumulated.
15 */
16 public StopWatch()
17 {
18 reset();
19 }
20
21 /**
22 Starts the stopwatch. Time starts accumulating now.
23 */
24 public void start()
25 {
26 if (isRunning) { return; }
27 isRunning = true;
28 startTime = System.currentTimeMillis();
29 }
30
31 /**
32 Stops the stopwatch. Time stops accumulating and is
33 is added to the elapsed time.
34 */
35 public void stop()
36 {
37 if (!isRunning) { return; }
38 isRunning = false;
39 long endTime = System.currentTimeMillis();
40 elapsedTime = elapsedTime + endTime - startTime;
41 }
42
43 /**
44 Returns the total elapsed time.
45 @return the total elapsed time
46 */
47 public long getElapsedTime()
48 {
49 if (isRunning)
50 {
51 long endTime = System.currentTimeMillis();
52 return elapsedTime + endTime - startTime;
53 }
54 else
55 {
56 return elapsedTime;
57 }
58 }
59
60 /**
61 Stops the watch and resets the elapsed time to 0.
62 */
63 public void reset()
64 {
65 elapsedTime = 0;
66 isRunning = false;
67 }
68 }