1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.kuali.common.util;
17
18 public class Counter {
19
20 int count;
21
22 public Counter() {
23 this(0);
24 }
25
26 public Counter(int startValue) {
27 this.count = startValue;
28 }
29
30 public synchronized int increment() {
31 return increment(1);
32 }
33
34 public synchronized int increment(int amount) {
35 Assert.isTrue(amount > 0, "amount must be > 0");
36 Assert.isTrue(count <= Integer.MAX_VALUE - amount, "max value exceeded");
37 return count += amount;
38 }
39
40 public synchronized int decrement() {
41 return decrement(1);
42 }
43
44 public synchronized int decrement(int amount) {
45 Assert.isTrue(amount > 0, "amount must be > 0");
46 Assert.isTrue(count >= Integer.MIN_VALUE + amount, "min value exceeded");
47 return count -= amount;
48 }
49
50 public synchronized int getValue() {
51 return count;
52 }
53 }