效果:
100个线程同时获取订单号
1,创建OrderService类
package com.hyw.service;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
public class OrderService implements Runnable {
static Integer number = 50000000; //初始化定单号
private Lock lock = new ReentrantLock();
@Override
public void run() {
getNumber();
}
private void getNumber(){
try {
lock.lock();
String number = generatorNumber();
System.out.println(Thread.currentThread()+",获取的number:"+number);
} finally {
lock.unlock();
}
}
/**
* 生成单号
* @return
*/
static String generatorNumber(){
String dh = "单号:"+number;
number ++;
return dh;
}
}
2.模拟100个线程生成订单号
package com.hyw.lock;
import com.hyw.service.OrderService;
public class TestMain {
public static void main(String[] args) {
for (int i = 0; i < 100; i++) {
new Thread(new OrderService()).start();
}
}
}
运行结果: