27 lines
711 B
Java
27 lines
711 B
Java
|
package services;
|
||
|
|
||
|
import java.util.concurrent.atomic.AtomicInteger;
|
||
|
import javax.inject.*;
|
||
|
|
||
|
/**
|
||
|
* This class is a concrete implementation of the {@link Counter} trait.
|
||
|
* It is configured for Guice dependency injection in the {@link Module}
|
||
|
* class.
|
||
|
*
|
||
|
* This class has a {@link Singleton} annotation because we need to make
|
||
|
* sure we only use one counter per application. Without this
|
||
|
* annotation we would get a new instance every time a {@link Counter} is
|
||
|
* injected.
|
||
|
*/
|
||
|
@Singleton
|
||
|
public class AtomicCounter implements Counter {
|
||
|
|
||
|
private final AtomicInteger atomicCounter = new AtomicInteger();
|
||
|
|
||
|
@Override
|
||
|
public int nextCount() {
|
||
|
return atomicCounter.getAndIncrement();
|
||
|
}
|
||
|
|
||
|
}
|