java生成顺序流水号_Java生成流水号(1)

本文介绍了在单一数据库源情况下,如何使用Java并发地生成顺序流水号。通过`SELECT FOR UPDATE`锁定数据,并提供了一个测试程序`TestGetter`,该程序创建多个线程并更新流水号,展示了并发安全性。
摘要由CSDN通过智能技术生成

假设是单一数据库源的情况。

通过SELECT FOR UPDATE锁数据。

测试程序。

package javay.test;

class TestGetter extends Thread {

private int id;

public TestGetter(int n) {

id = n;

}

/* *

* @see java.lang.Thread#run()

*/

@Override

public void run() {

String[] keys = {

"key11",

"key12",

"key13"

};

long sn = -2;

try {

sn = JSerialNumber.updateSerialNumber(keys);

} catch (Exception e) {

e.printStackTrace();

}

System.out.println("Thread" + id + ":sn=" + sn);

}

}

public class TestJN {

public static void main(String[] args) throws Exception {

//        String[] keys = {

//            "key11",

//            "key12",

//            "key13"

//        };

//        // long sn = JSerialNumber.createSerialNumber(keys, JSerialNumber.MIN_VALUE, 1L, JSerialNumber.MAX_VALUE);

//        long sn = JSerialNumber.updateSerialNumber(keys);

//        System.out.println("TestJN:sn=" + sn);

TestGetter[] gs = new TestGetter[100];

for (int i = 0; i < 100; i ++) {

gs[i] = new TestGetter(i);

}

for (TestGetter g : gs) {

g.start();

}

}

}

下次计划测试一下性能和使用synchronized来实现一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值