java 流水号生成器
时间: 2023-10-11 21:17:49 浏览: 467
以下是一个简单的 Java 流水号生成器的示例代码:
```
import java.text.SimpleDateFormat;
import java.util.Date;
public class SerialNumberGenerator {
private static int counter = 0;
private static final int MAX_COUNT = 9999;
public static synchronized String generateSerialNumber() {
if (counter > MAX_COUNT) {
counter = 0;
}
counter++;
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
return sdf.format(new Date()) + String.format("%04d", counter);
}
}
```
这个生成器使用了一个静态计数器来保证每个流水号的唯一性。当计数器超过最大限制时,计数器会归零重新开始计数。日期格式化器用于将当前时间转换为字符串形式,并将计数器格式化为四位数,以保证生成的流水号长度相同。使用 synchronize 关键字可以保证多线程环境下的安全性。
相关问题
java 唯一流水号_JAVA流水号生成规格,采用同步单例生成,保证永远唯一
Java 流水号生成可以采用 UUID(Universally Unique Identifier)算法来实现。UUID 是标准的 36 位长度的字符串,用于唯一标识信息。UUID 算法基于时间戳、节点、随机数等因素生成唯一的 ID,几乎可以保证每次生成的 ID 都是唯一的。
以下是一个简单的 Java 流水号生成器的实现示例:
```java
import java.util.UUID;
public class SerialNumberGenerator {
private static SerialNumberGenerator instance = null;
private SerialNumberGenerator() {
}
public synchronized static SerialNumberGenerator getInstance() {
if (instance == null) {
instance = new SerialNumberGenerator();
}
return instance;
}
public String generateSerialNumber() {
UUID uuid = UUID.randomUUID();
return uuid.toString();
}
}
```
上述代码实现了一个同步单例模式的流水号生成器,并通过 UUID 算法生成唯一的流水号。可以通过调用 `generateSerialNumber()` 方法来获取一个新的流水号。该方法返回的是一个 UUID 字符串,可以根据需要进行格式化处理。
java生成业务流水号的设计
在Java中生成业务流水号可以采用以下方式:
1. 采用UUID生成唯一标识符,可以保证生成的流水号不重复,但是不方便查找。
2. 采用时间戳+随机数的方式生成流水号,时间戳可以保证流水号的唯一性,随机数可以使流水号更加随机。
3. 采用序列号的方式生成流水号,可以保证流水号的连续性和唯一性,但是需要保证序列号的持久化和并发访问的线程安全。
4. 采用分布式ID生成器,可以保证生成的ID全局唯一,如Twitter的Snowflake算法。
综合考虑,可以采用时间戳+随机数的方式生成流水号,代码示例:
```java
public class SerialNumberGenerator {
private static final Random random = new Random();
private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
public static String generate() {
String timestamp = sdf.format(new Date());
int randomNum = random.nextInt(900) + 100;
return timestamp + randomNum;
}
}
```
使用示例:
```java
public class Test {
public static void main(String[] args) {
String serialNumber = SerialNumberGenerator.generate();
System.out.println("生成的流水号:" + serialNumber);
}
}
```
输出结果:
```
生成的流水号:20210913142056512
```
阅读全文