package org.jeecg.boot.starter.lock.test;
|
|
import org.jeecg.boot.starter.lock.annotation.JLock;
|
import org.jeecg.boot.starter.lock.annotation.JRepeat;
|
import org.jeecg.boot.starter.lock.annotation.LockConstant;
|
import org.jeecg.boot.starter.lock.client.RedissonLockClient;
|
import org.springframework.stereotype.Service;
|
|
import javax.annotation.Resource;
|
|
@Service
|
public class LockService {
|
|
@Resource
|
private RedissonLockClient redissonLockClient;
|
|
int n = 10;
|
|
/**
|
* 模拟秒杀(注解方式)
|
*/
|
@JLock(lockKey = "#productId", expireSeconds = 5000)
|
public void seckill(String productId) {
|
if (n <= 0) {
|
System.out.println("活动已结束,请下次再来");
|
return;
|
}
|
System.out.println(Thread.currentThread().getName() + ":秒杀到了商品");
|
System.out.println(--n);
|
}
|
|
/**
|
* 模拟秒杀(编程方式)
|
*/
|
public void seckill2(String productId) {
|
redissonLockClient.tryLock(productId, 5000);
|
if (n <= 0) {
|
System.out.println("活动已结束,请下次再来");
|
return;
|
}
|
System.out.println(Thread.currentThread().getName() + ":秒杀到了商品");
|
System.out.println(--n);
|
redissonLockClient.unlock(productId);
|
}
|
|
|
/**
|
* 测试重复提交
|
*/
|
@JRepeat(lockKey = "#name", lockTime = 5)
|
public void reSubmit(String name) {
|
try {
|
Thread.sleep(1500);
|
} catch (InterruptedException e) {
|
e.printStackTrace();
|
}
|
System.out.println("提交成功" + name);
|
}
|
}
|