package com.revolsys.util;
public class ThreadLocalCounter implements Counter {
private final ThreadLocal<Long> counts = new ThreadLocal<>();
private final String name;
public ThreadLocalCounter(final String name) {
this.name = name;
}
public ThreadLocalCounter(final String name, final Number count) {
this.name = name;
add(count);
}
@Override
public long add() {
return add(1L);
}
@Override
public long add(final long count) {
final long newCount = get() + count;
set(newCount);
return newCount;
}
@Override
public long add(final Number count) {
return add(count.longValue());
}
public void clear() {
this.counts.set(null);
}
@Override
public long get() {
final Long count = this.counts.get();
if (count == null) {
return 0;
} else {
return count;
}
}
@Override
public String getName() {
return this.name;
}
public void set(final long count) {
this.counts.set(count);
}
@Override
public String toString() {
return this.name + "=" + get();
}
}