I am planning to write a sequence generator which will be used in my REST resource implementation class during post to generate unique id. Since every post request is handled by separate thread, I made the variable volatile and method synchronized. I don't have option to use sequences or something which traditional RDBMS provides.
public class SequenceGen {
volatile static int n = 0;
public synchronized int nextNum(){
return n++;
}
}
this is what I have so far, and planning to create a variable of SequenceGen in my REST Implementation. My actual question is will it break somewhere ? I tested with two threads and I dont see any value repeated.
It will work, however AtomicInteger
is an built in type that is perfect for your use case.
AtomicInteger seq = new AtomicInteger();
int nextVal = seq.incrementAndGet();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With