If you want your sequence generation class to be survived between server restart ,you can consider to use db seqence(oracle sequence,mysql LAST_INSERT_ID() ..) If not,You can use Atomic Integer ,it is thread safe.you can define a singleton class and use AtomicInteger 's getAndIncrement() method to generate sequence number.