* Sync fixes to Frequency

* Removal of warnings related to generics in StatManager
This commit is contained in:
zab
2012-11-14 21:53:54 +00:00
parent 4fdf1c2411
commit a3e3001d49
2 changed files with 21 additions and 28 deletions

View File

@@ -35,7 +35,7 @@ public class Frequency {
* when did the last event occur?
* @deprecated unused
*/
public long getLastEvent() {
public synchronized long getLastEvent() {
return _lastEvent;
}
@@ -44,7 +44,7 @@ public class Frequency {
* as calculated during the last event occurrence?
* @return milliseconds; returns period + 1 if no events in previous period
*/
public double getAverageInterval() {
public synchronized double getAverageInterval() {
return _avgInterval;
}
@@ -53,7 +53,7 @@ public class Frequency {
* @return milliseconds; returns period + 1 if no events in previous period
* @deprecated unused
*/
public double getMinAverageInterval() {
public synchronized double getMinAverageInterval() {
return _minAverageInterval;
}
@@ -61,45 +61,41 @@ public class Frequency {
* Calculate how many events would occur in a period given the current (rolling) average.
* Use getStrictAverageInterval() for the real lifetime average.
*/
public double getAverageEventsPerPeriod() {
synchronized (this) {
if (_avgInterval > 0) return _period / _avgInterval;
return 0;
}
public synchronized double getAverageEventsPerPeriod() {
if (_avgInterval > 0) return _period / _avgInterval;
return 0;
}
/**
* Calculate how many events would occur in a period given the maximum rolling average.
* Use getStrictAverageEventsPerPeriod() for the real lifetime average.
*/
public double getMaxAverageEventsPerPeriod() {
synchronized (this) {
if (_minAverageInterval > 0 && _minAverageInterval <= _period) return _period / _minAverageInterval;
public synchronized double getMaxAverageEventsPerPeriod() {
if (_minAverageInterval > 0 && _minAverageInterval <= _period) return _period / _minAverageInterval;
return 0;
}
return 0;
}
/**
* Over the lifetime of this stat, without any decay or weighting, what was the average interval between events? (ms)
* @return milliseconds; returns Double.MAX_VALUE if no events ever
*/
public double getStrictAverageInterval() {
public synchronized double getStrictAverageInterval() {
long duration = now() - _start;
if ((duration <= 0) || (_count <= 0)) return Double.MAX_VALUE;
return duration / (double) _count;
}
/** using the strict average interval, how many events occur within an average period? */
public double getStrictAverageEventsPerPeriod() {
public synchronized double getStrictAverageEventsPerPeriod() {
double avgInterval = getStrictAverageInterval();
if (avgInterval > 0) return _period / avgInterval;
return 0;
}
/** how many events have occurred within the lifetime of this stat? */
public long getEventCount() {
public synchronized long getEventCount() {
return _count;
}

View File

@@ -10,7 +10,6 @@ import java.util.TreeSet;
import java.util.concurrent.ConcurrentHashMap;
import net.i2p.I2PAppContext;
import net.i2p.util.Log;
/**
* Coordinate the management of various frequencies and rates within I2P components,
@@ -20,7 +19,6 @@ import net.i2p.util.Log;
*
*/
public class StatManager {
private final Log _log;
private final I2PAppContext _context;
/** stat name to FrequencyStat */
@@ -47,11 +45,10 @@ public class StatManager {
* appropriate application context itself.
*
*/
public StatManager(I2PAppContext context) {
_log = context.logManager().getLog(StatManager.class);
public StatManager(I2PAppContext context) {
_context = context;
_frequencyStats = new ConcurrentHashMap(8);
_rateStats = new ConcurrentHashMap(128);
_frequencyStats = new ConcurrentHashMap<String,FrequencyStat>(8);
_rateStats = new ConcurrentHashMap<String,RateStat>(128);
if (getStatFilter() != null)
_statLog = new BufferedStatLog(context);
}
@@ -194,11 +191,11 @@ public class StatManager {
}
public Set<String> getFrequencyNames() {
return new HashSet(_frequencyStats.keySet());
return new HashSet<String>(_frequencyStats.keySet());
}
public Set<String> getRateNames() {
return new HashSet(_rateStats.keySet());
return new HashSet<String>(_rateStats.keySet());
}
/** is the given stat a monitored rate? */
@@ -216,12 +213,12 @@ public class StatManager {
* Map is unsorted.
*/
public Map<String, SortedSet<String>> getStatsByGroup() {
Map<String, SortedSet<String>> groups = new HashMap(32);
Map<String, SortedSet<String>> groups = new HashMap<String, SortedSet<String>>(32);
for (FrequencyStat stat : _frequencyStats.values()) {
String gname = stat.getGroupName();
SortedSet<String> names = groups.get(gname);
if (names == null) {
names = new TreeSet();
names = new TreeSet<String>();
groups.put(gname, names);
}
names.add(stat.getName());
@@ -230,7 +227,7 @@ public class StatManager {
String gname = stat.getGroupName();
SortedSet<String> names = groups.get(gname);
if (names == null) {
names = new TreeSet();
names = new TreeSet<String>();
groups.put(gname, names);
}
names.add(stat.getName());