java 自动生成编码流水号递增 且如果未被保存使用自动释放 利用缓存实现 代码示例
时间: 2024-03-09 22:44:23 浏览: 14
好的,以下是一个示例代码:
```java
public class CodeGenerator {
private static final int MAX_CACHE_SIZE = 1000;
private static final AtomicInteger sequence = new AtomicInteger(0);
private static Queue<String> codeCache = new LinkedList<>();
public static String generateCode() {
if (!codeCache.isEmpty()) {
return codeCache.poll();
}
int seq = sequence.getAndIncrement();
String code = String.format("%06d", seq);
// 缓存一部分编码,避免每次都生成新编码
if (codeCache.size() < MAX_CACHE_SIZE) {
codeCache.offer(String.format("%06d", seq + 1));
}
return code;
}
public static void releaseCode(String code) {
if (codeCache.size() < MAX_CACHE_SIZE) {
codeCache.offer(code);
}
}
}
```
使用时,可以调用 `generateCode()` 方法来获取一个新编码,如果不需要使用了,可以调用 `releaseCode(String code)` 来释放已使用的编码,这样就可以避免每次都生成新编码,提高效率。
在这个示例代码中,使用了一个 `AtomicInteger` 类型的变量 `sequence` 来记录当前的编码序号,每次生成编码时,都会将序号加 1。同时,使用一个队列 `codeCache` 来缓存一部分编码,避免每次都生成新编码。如果队列已满,就不再缓存新的编码。